SQL обновляет все значения в поле с добавленной строкой CONCAT не работает
вот что я хочу сделать:
текущая таблица:
+----+-------------+
| id | data |
+----+-------------+
| 1 | max |
| 2 | linda |
| 3 | sam |
| 4 | henry |
+----+-------------+
Тайна запроса ( что-то вроде "UPDATE table SET data = CONCAT(data, 'a')")
результирующая таблица:
+----+-------------+
| id | data |
+----+-------------+
| 1 | maxa |
| 2 | lindaa |
| 3 | sama |
| 4 | henrya |
+----+-------------+
вот оно! Мне просто нужно сделать это в одном запросе, но не могу найти способ. Я использую mySQL на bluehost (я думаю, что его версия 4.1)
спасибо всем.
7 ответов:
Это почти все, что вам нужно:
mysql> select * from t; +------+-------+ | id | data | +------+-------+ | 1 | max | | 2 | linda | | 3 | sam | | 4 | henry | +------+-------+ 4 rows in set (0.02 sec) mysql> update t set data=concat(data, 'a'); Query OK, 4 rows affected (0.01 sec) Rows matched: 4 Changed: 4 Warnings: 0 mysql> select * from t; +------+--------+ | id | data | +------+--------+ | 1 | maxa | | 2 | lindaa | | 3 | sama | | 4 | henrya | +------+--------+ 4 rows in set (0.00 sec)Не знаю, почему у вас будут проблемы, хотя я тестирую это на 5.1.41
CONCAT с нулевым значением возвращает null, поэтому самое простое решение:
таблица mytable обновить комплект запасных частей = IFNULL (функция concat( запасные части , "строка" ), "строка")
UPDATE mytable SET spares = CONCAT(spares, ',', '818') WHERE id = 1не работает для меня.
запасные части составляет
NULLпо умолчанию, но егоvarchar
ее решили. Оказывается, столбец имел ограниченный набор символов, которые он принял бы, изменил его, и теперь запрос работает нормально.
преобразование
NULLзначения с пустой строкой, завернув его вCOALESCE"UPDATE table SET data = CONCAT(COALESCE(`data`,''), 'a')"или
использовать CONCAT_WS вместо:
"UPDATE table SET data = CONCAT_WS(',',data, 'a')"
UPDATE myTable SET col = CONCAT( col , "string" )не смог разобраться. Синтаксис запроса был правильным, но" 0 строка затронута " при выполнении.
решение :
UPDATE myTable SET col = CONCAT( myTable.col , "string" )это сработало.
вы можете сделать это:
Update myTable SET spares = (SELECT CASE WHEN spares IS NULL THEN '' ELSE spares END AS spares WHERE id = 1) + 'some text' WHERE id = 1поле = поле + значение не работает, когда поле имеет значение null.
Comments