Подтвердить что ты не робот

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

Мне нужно ОБНОВИТЬ tablename (col1name)

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

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

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

Правильно ли это указано?

4b9b3361

Ответ 2

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

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');

Ответ 3

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

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

Смотрите SQL Fiddle with Demo

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

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

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

Вернется:

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

Ответ 4

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 |

Ответ 5

почему вы пишете функцию ifnull: очевидно, что если col1name1 пусто, то конкатенация с нулем означает null+ 'a, b, c' просто 'a, b, c' set col1name = concat (ifnull (col1name, ""), 'a, b, c') вместо этого вы можете прямо написать set col1name = concat (col1name, 'a, b, c')