it-swarm.com.ru

MySQL UPDATE добавить данные в столбец

Мне нужно обновить имя таблицы (col1name)

Если данные уже есть, мне нужно добавить их со значениями «a, b, c» Если это NULL, мне нужно добавить значения «a, b, c»

Я знаю, что есть аргумент CONCAT, но не уверен, какой будет синтаксис SQL.

update tablename set col1name = concat(ifnull(col1name, 'a,b,c'), 'a,b,c')

Это правильно?

27
Robert Hoffmann

Попробуйте этот запрос:

update tablename set col1name = concat(ifnull(col1name,""), 'a,b,c');

См. Это демо sql fiddle.

55
Dhinakar

Это должно сделать это:

update tablename set
col1name = if(col1name is null, 'a,b,c', concat(col1name, 'a,b,c'));


Или вы можете сделать свою жизнь проще, выполнив два действия:

update tablename set col1name = '' where col1name is null;

затем

update tablename set col1name = concat(col1name, 'a,b,c');
6
Bohemian

Вы можете использовать следующее:

update yourtable 
set yourcol = case when yourcol is null then 'a,b,c'
                  else concat(yourcol, ' a,b,c') end

См. SQL Fiddle с демонстрацией

Пример данных:

CREATE TABLE yourtable(`yourcol` varchar(50));

INSERT INTO yourtable(`yourcol`)
VALUES  ('sadsdh'),
    (NULL);

Вернусь:

|      YOURCOL |
----------------
| sadsdh a,b,c |
|        a,b,c |
4
Taryn

IFNULL (столбец, ''), сохраняет любые операторы if, делает SQL намного проще!

MySQL 5.6 Настройка схемы:

CREATE TABLE tablename
    (`yourcol` varchar(50))
;

INSERT INTO tablename
    (`yourcol`)
VALUES
    ('sadsdh'),
    (NULL)
;

UPDATE tablename SET
    yourcol = CONCAT( IFNULL(yourcol,' '), 'somevalue' )
;

Запрос:

select *
from tablename

Результаты:

|         yourcol |
|-----------------|
| sadsdhsomevalue |
|       somevalue |
0
MrMesees