2013-07-12 2 views
0

я должен добавить ноль перед строкойобновления MySQL с CONCAT не работало

на первое, я выбираю мои данные для проверки

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) 

спасибо много

+0

столбец ср является внутр. u нужно сделать этот varchar/char –

ответ

0

Ваш столбец CP является целым числом, а не строкой, поэтому он всегда будет рассматриваться как таковой. Если вы хотите, чтобы формат из 6 цифр изменился на CHAR (6).

+0

В первом выборе SELECT, LENGTH (cp) ', который является целым числом 4 (я полагаю). Почему это не работает для второго запроса UPDATE? – BLaZuRE

+0

да, сейчас он работает один вопрос: почему CONCAT работает с SELECT и UPDATE? – cyphos

+0

@cyphos Выберите свой ответ в качестве принятого ответа, если это то, что вам помогло. Тем не менее, я все еще чувствую, что ваш второй запрос должен сработать, если ваш первый дал вам эти результаты. Я еще не тестировал. – BLaZuRE

1

С ниже запроса:

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

Вы должны преобразовать Number в char("CAST")