SQL UPDATE все значения в поле с добавленной строкой 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)
Спасибо всем.
Ответы
Ответ 1
Это почти все, что вам нужно:
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
Ответ 2
CONCAT с нулевым значением возвращает значение null, поэтому самое легкое решение:
UPDATE myTable SET spares = IFNULL (CONCAT (запасные части, "строка" ), "строка" )
Ответ 3
UPDATE mytable SET spares = CONCAT(spares, ',', '818') WHERE id = 1
не работает для меня.
spares NULL
по умолчанию, но его varchar
Ответ 4
Решил. Оказывается, столбец имел ограниченный набор символов, которые он принял бы, изменил бы его, и теперь запрос работает нормально.
Ответ 5
преобразуйте значения NULL
в пустую строку, обернув ее в COALESCE
"UPDATE table SET data = CONCAT(COALESCE(`data`,''), 'a')"
ИЛИ
Используйте CONCAT_WS вместо:
"UPDATE table SET data = CONCAT_WS(',',data, 'a')"
Ответ 6
UPDATE
myTable
SET
col = CONCAT( col , "string" )
Не удалось его обработать. Синтаксис запроса был правильным, но при выполнении "0 влияет строка".
Решение:
UPDATE
myTable
SET
col = CONCAT( myTable.col , "string" )
Это сработало.
Ответ 7
Вы можете сделать это:
Update myTable
SET spares = (SELECT CASE WHEN spares IS NULL THEN '' ELSE spares END AS spares WHERE id = 1) + 'some text'
WHERE id = 1
field = поле + значение не работает, когда поле равно null.