0

我应该在字符串前加一个零

首先,我选择我的数据进行验证

mysql> SELECT cp, LENGTH(cp), CONCAT(0, `cp`) FROM communes WHERE LENGTH(cp) < 5
ORDER BY cp ASC LIMIT 4;
+------+------------+-----------------+
| cp   | LENGTH(cp) | CONCAT(0, `cp`) |
+------+------------+-----------------+
| 1000 |          4 | 01000           |
| 1000 |          4 | 01000           |
| 1000 |          4 | 01000           |
| 1090 |          4 | 01090           |
+------+------------+-----------------+
4 rows in set (0.03 sec)

它运作良好。

第二,我尝试更新

mysql> UPDATE communes SET cp = CONCAT(0,`cp`) WHERE LENGTH(cp) < 5;
Query OK, 0 rows affected (0.07 sec)
Rows matched: 3447  Changed: 0  Warnings: 0

我不明白为什么它不起作用

信息

mysql> describe communes;
+------------+--------------+------+-----+---------+----------------+
| Field      | Type         | Null | Key | Default | Extra          |
+------------+--------------+------+-----+---------+----------------+
| id         | int(10)      | NO   | PRI | NULL    | auto_increment |
| title      | varchar(255) | NO   |     | NULL    |                |
| cp         | int(6)       | NO   |     | NULL    |                |
| dept       | varchar(255) | NO   |     | NULL    |                |
| code_insee | int(11)      | NO   |     | NULL    |                |
+------------+--------------+------+-----+---------+----------------+
5 rows in set (0.01 sec)

十分感谢

4

2 回答 2

1

使用以下查询:

UPDATE communes
SET cp = CONCAT( CAST( 0 as char), `cp`) 
WHERE LENGTH(cp) < 5;

您必须转换Numberchar ("CAST")

于 2017-01-24T12:41:29.760 回答
0

您的 CP 列是一个整数而不是字符串,因此它将始终被视为这样。如果您想将 6 位数字的格式更改为 CHAR(6)。

于 2013-07-12T10:02:37.950 回答