1

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

4

2 回答 2

0

尝试这个

update mytable set mycol = 
CONCAT(LEFT(mycol,4) , REPEAT('0',length(mycol)-6) , RIGHT(mycol,2));

使用 LEFT 和 RIGHT 函数,您可以从字符串的任一侧指定字符串的长度。重复函数将返回具有指定数量的“0”值的字符串。

于 2013-10-02T12:05:13.230 回答
0

尝试这个:

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

这使用REPEATMySQL中的函数重复 '0' 指定的次数。

我已经用一些示例数据对此进行了测试,它似乎可以满足您的需要,但是您可以通过以下方式测试您的数据SELECT

SELECT CONCAT(SUBSTR(mycol,1,4), REPEAT('0',LENGTH(mycol)-6), SUBSTR(mycol,-2))
FROM mytable 
于 2013-10-02T12:02:52.927 回答