我在MySQL数据库中有一个列,目前所有长度都是不同的例子 -
Reference (Column Name)
12930
1829
892
182902
我需要它们全部为12个字符,并在前面添加0来使它们成为那个长度,所以上面的例子需要变成 -
Reference (Column Name)
000000012930
000000001829
000000000892
000000182902
我是否可以运行SQL查询来执行此操作,如果不是,最好的方法是什么?
答案 0 :(得分:5)
如果你使用数字(int,bigint,float等......)
,请使用zerofill
ALTER TABLE a modify column min int(12) /* other properties */ zerofill;
如果使用varchar或char,则必须使用PHP str_pad:
echo str_pad($input, 12, "0", STR_PAD_LEFT);
答案 1 :(得分:1)
有一个名为LPAD
的MySQL函数会为您执行此操作。请注意,它也会通过删除较低的数字来截断大数字,因为它将字段视为字符串。这是一个例子:
mysql> CREATE TABLE foo (n INTEGER);
Query OK, 0 rows affected (0.03 sec)
mysql> INSERT INTO foo VALUES (12345), (2147483647);
Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> SELECT n, RPAD(n, 15, ' '), LPAD(n, 5, '0'), LPAD(n, 15, '0') FROM foo;
+------------+------------------+-----------------+------------------+
| n | RPAD(n, 15, ' ') | LPAD(n, 5, '0') | LPAD(n, 15, '0') |
+------------+------------------+-----------------+------------------+
| 12345 | 12345 | 12345 | 000000000012345 |
| 2147483647 | 2147483647 | 21474 | 000002147483647 |
+------------+------------------+-----------------+------------------+
2 rows in set (0.00 sec)