我有一个MySQL数据库指定的列COUNTRY_ID,如:
country_id
----------
1
2
59
435
2714
我想要现在做到的是加前导零的每一个ID,这样的结果将是:
country_id
----------
0001
0002
0059
0435
2714
每个ID应该有最多4个位数。 而已。
有没有我可以在phpMyAdmin使用更新上述方式这COUNTRY_ID列的任何SQL语句?
最好的祝福!
我有一个MySQL数据库指定的列COUNTRY_ID,如:
country_id
----------
1
2
59
435
2714
我想要现在做到的是加前导零的每一个ID,这样的结果将是:
country_id
----------
0001
0002
0059
0435
2714
每个ID应该有最多4个位数。 而已。
有没有我可以在phpMyAdmin使用更新上述方式这COUNTRY_ID列的任何SQL语句?
最好的祝福!
声明ZEROFILL
的列:
mysql> create table foobar (nr integer(4) ZEROFILL);
Query OK, 0 rows affected (0.31 sec)
mysql> INSERT INTO foobar VALUES (1),(12),(123),(1234),(12345);
Query OK, 5 rows affected (0.05 sec)
Records: 5 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM foobar;
| 0001
| 0012
| 0123
| 1234
| 12345
如果country_id
列是字符数据类型(不是数字),那么你可以在前面加上零,并采取最右边的部分:
UPDATE foo SET country_id = RIGHT(CONCATENATE('0000',country_id),4)
UPDATE foo SET country_id = LPAD(country_id, 4, '0')
(注:无论这些语句会导致数据丢失,如果任何值country_id
超过4个字符长...第一个得到righmost字符,第二个RTH获得四个最左边的字符,如果COUNTRY_ID超过四个字符。如果值有EA领先“ - ”字符,这将导致一个奇怪的期待值,例如,00 -4' 的LTRIM函数可用于删除前导空格。
如果,另一方面, country_id
是一个数字类型,那么你真的不能添加前导零。
对于整数类型,可以指定一个显示长度和ZEROFILL选项,例如
country_id INT(4) ZEROFILL
但是,这取决于客户端应用程序利用长度修改和ZEROFILL属性执行指定的格式,有没有真的没有什么东西正在做“数据库”与那些属性。 (MySQL命令行客户端会观察这些设置,并显示填充四个字符的最大价值为零。但是,要做到这一点其他客户端不是必需的。)
您还可以将该值转换为字符,并填充它以“0”字符,在查询:
SELECT LPAD(country_id, 4, '0') AS country_id
但要注意,那将返回一个字符类型,而不是一个数字。
SELECT LPAD(country_id, 4, '0')
FROM your_table
如果你可以改变你的数据库结构使用ZEROFILL