如何统一mysql中的表中的数字?

时间:2013-09-14 18:59:06

标签: mysql regex replace

我有一张数据表:

000001
123
00123
123456
1234
mydog
04456mydog

我希望所有数字<10000格式化为四位数字,如下所示:

0001
0123
0123
123456
1234
mydog
04456mydog

我该如何做到这一点?

2 个答案:

答案 0 :(得分:3)

一种可能的方法:

UPDATE test
   SET digits = LPAD(CAST(digits AS UNSIGNED), 4, '0')
 WHERE digits REGEXP '^[0-9]+$'
   AND CAST(digits AS UNSIGNED) < 10000;

SQL Fiddle

答案 1 :(得分:0)

不测试它。这可能有效:

select case when YourField REGEXP '^-?[0-9]+$' and cast(YourField as unsigned) < 10000 then LPAD(RIGHT(YourField, 4), 4, '0')
else YourField
end
from YourTable