更新一个中间位被零掩码的列

时间:2013-10-02 11:51:27

标签: mysql sql-update concat substr

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

2 个答案:

答案 0 :(得分:0)

试试这个:

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 

答案 1 :(得分:0)

试试这个

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

使用LEFT和RIGHT函数,您可以指定字符串两侧的字符串长度。重复功能将返回具有指定数量的'0'值的字符串。