Обновление полей в одной таблице, которые не являются пустыми - PullRequest
1 голос
/ 21 мая 2010

Я получил этот SQL:

UPDATE users2 
SET picture = 'sites/site2/files/pictures/' + picture;
WHERE picture NOT IS NULL

И единственное, что я получаю - все поля picture получают значение '0'.

Ответы [ 2 ]

3 голосов
/ 21 мая 2010

Потому что добавление не работает для строк. Вместо этого используйте CONCAT ():

UPDATE users2 
SET picture = CONCAT('sites/site2/files/pictures/', picture)
WHERE pictures NOT IS NULL

Кроме того, обратите внимание, что в середине запроса у вас точка с запятой ... удалите ее или вы обновите все строки!

2 голосов
/ 21 мая 2010

В MySQL + означает сложение чисел. Ваши строки приводятся к целым числам, добавляются, а затем результат преобразуется обратно в строку.

Используйте CONCAT для объединения строк. Вот исправленная версия вашего запроса:

UPDATE users2 
SET picture = CONCAT('sites/site2/files/pictures/', picture)
WHERE picture IS NOT NULL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...