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

0

CP 列は文字列ではなく整数であるため、常にそのように扱われます。6桁のフォーマットをCHAR(6)に変更したい場合。

于 2013-07-12T10:02:37.950 に答える