Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL向列中的现有ID添加前导号_Mysql_Phpmyadmin_Sql Update - Fatal编程技术网

MySQL向列中的现有ID添加前导号

MySQL向列中的现有ID添加前导号,mysql,phpmyadmin,sql-update,Mysql,Phpmyadmin,Sql Update,我得到了一个名为country_id的mysql数据库列,如: country_id ---------- 1 2 59 435 2714 我现在要做的是将前导零添加到每个ID,因此结果将是: country_id ---------- 0001 0002 0059 0435 2714 每个ID最多应有4位数字。就这样 在PHPmyAdmin中是否有任何SQL语句可用于以上述方式更新此country_id列 致以最良好的祝愿 SELECT LPAD(country_id, 4, '0') F

我得到了一个名为country_id的mysql数据库列,如:

country_id
----------
1
2
59
435
2714
我现在要做的是将前导零添加到每个ID,因此结果将是:

country_id
----------
0001
0002
0059
0435
2714
每个ID最多应有4位数字。就这样

在PHPmyAdmin中是否有任何SQL语句可用于以上述方式更新此country_id列

致以最良好的祝愿

SELECT LPAD(country_id, 4, '0')
FROM your_table
如果可以更改数据库结构,请使用

如果可以更改数据库结构,请在列上使用声明零填充:

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 
在列上声明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个字符,则这些语句中的任何一个都将导致数据丢失。。。第一个获取最严格的字符,第二个将获取最左边的四个字符,如果country_id超过四个字符。如果一个值有一个前导'-'字符,这将导致一个看起来很奇怪的值,例如'00-4'。LTRIM函数可用于删除前导空格

另一方面,如果country_id是一个数字数据类型,那么就不能真正添加前导零

对于整数类型,可以指定显示长度和ZEROFILL选项,例如

country_id INT(4) ZEROFILL
但是,由客户机应用程序使用长度修饰符和ZEROFILL属性来执行指定的格式化,在数据库中没有使用这些属性执行任何操作。MySQL命令行客户机将观察这些设置,并显示填充为零的值,最多四个字符。但其他客户不需要这样做

您还可以将该值强制转换为字符,并在查询中填充前导“0”字符:

SELECT LPAD(country_id, 4, '0') AS country_id
但请注意,返回的是字符类型,而不是数字。

如果country\u 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个字符,则这些语句中的任何一个都将导致数据丢失。。。第一个获取最严格的字符,第二个将获取最左边的四个字符,如果country_id超过四个字符。如果一个值有一个前导'-'字符,这将导致一个看起来很奇怪的值,例如'00-4'。LTRIM函数可用于删除前导空格

另一方面,如果country_id是一个数字数据类型,那么就不能真正添加前导零

对于整数类型,可以指定显示长度和ZEROFILL选项,例如

country_id INT(4) ZEROFILL
但是,由客户机应用程序使用长度修饰符和ZEROFILL属性来执行指定的格式化,在数据库中没有使用这些属性执行任何操作。MySQL命令行客户机将观察这些设置,并显示填充为零的值,最多四个字符。但其他客户不需要这样做

您还可以将该值强制转换为字符,并在查询中填充前导“0”字符:

SELECT LPAD(country_id, 4, '0') AS country_id

但请注意,这将返回一个字符类型,而不是数字。

从表中选择LPADcountry\u id,5,'0'作为country\u id;不设置数据,声明列INTEGER4 zerofill从表中选择LPADcountry_id,5,'0'作为country_id;不要设置数据,声明列整数4 ZEROFILL谢谢你提供ZEROFILL的链接,它帮助我理解了如何在PHPmyAdmin中声明!感谢您提供ZEROFILL的链接,它帮助我了解了如何在PHPmyAdmin中声明!