Ответ 1
Попробуйте этот запрос:
update tablename set col1name = concat(ifnull(col1name,""), 'a,b,c');
Мне нужно ОБНОВИТЬ tablename (col1name)
Если уже есть данные, мне нужно добавить их со значениями "a, b, c", Если он равен NULL, мне нужно добавить значения "a, b, c"
Я знаю, что есть аргумент CONCAT, но не уверен, что будет синтаксисом SQL.
update tablename set col1name = concat(ifnull(col1name, 'a,b,c'), 'a,b,c')
Правильно ли это указано?
Попробуйте этот запрос:
update tablename set col1name = concat(ifnull(col1name,""), 'a,b,c');
Это должно сделать это:
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');
Вы можете использовать следующее:
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 |
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 |
почему вы пишете функцию ifnull: очевидно, что если col1name1 пусто, то конкатенация с нулем означает null+ 'a, b, c' просто 'a, b, c' set col1name = concat (ifnull (col1name, ""), 'a, b, c') вместо этого вы можете прямо написать set col1name = concat (col1name, 'a, b, c')