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)



спасибо всем.

737   7  

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

    Ничего не найдено.