MySQL查询设置列中所有值的长度为12


MySQL Query to set length of all values in column to 12

我有一个列在MySQL数据库,这是目前所有不同的长度一个例子将是-

Reference (Column Name)
12930
1829
892
182902

我需要它们的长度都是12个字符,并在前面加上0以使它们达到这个长度,所以上面的例子需要变成-

Reference (Column Name)
000000012930
000000001829
000000000892
000000182902

是否有一个SQL查询我可以运行这样做,如果不是什么最好的方法来做到这一点?

如果使用数字(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);

有一个名为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)