SQL更新列。想要前4位和后2位保留x长度的所有零。

我试过了:

update mytable set mycol =
CONCAT(substr(mycol,1,4) , substr('00000000',length(mycol)-6) , substr(mycol,-2));


如果该列包含12位数字,这是可以的,但是如果它具有其他长度,该怎么办呢?

简而言之,我要:
123456789123为123400000023
1234567891234567为1234000000000067

最佳答案

尝试这个:

UPDATE mytable
SET mycol =
    CONCAT(SUBSTR(mycol,1,4), REPEAT('0',LENGTH(mycol)-6), SUBSTR(mycol,-2))


这使用REPEAT function in MySQL重复“ 0”指定的次数。

我已经用一些示例数据进行了测试,它似乎可以满足您的需求,但是您可以通过执行SELECT来对数据进行测试,如下所示:

SELECT CONCAT(SUBSTR(mycol,1,4), REPEAT('0',LENGTH(mycol)-6), SUBSTR(mycol,-2))
FROM mytable

10-06 08:59