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

Вярно ли е горното?


person Robert Hoffmann    schedule 24.12.2012    source източник
comment
@FahimParkar Не осъзнавах, че можех да използвам SQL Fiddle, но не исках да опитам нещо несигурно на уебсайт на живо. Благодаря ти.   -  person Robert Hoffmann    schedule 24.12.2012


Отговори (5)


Опитайте тази заявка:

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

Вижте тази демонстрация на sql fiddle.

person Dhinakar    schedule 24.12.2012
comment
Демонстрацията на SQL fiddle извежда грешка за мен (както в FF, така и в Chrome). Създаден е друг: sqlfiddle.com/#!9/8385a3/1/0 - person Dmytro Dzyubak; 30.10.2016

Това трябва да го направи:

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');
person Bohemian♦    schedule 24.12.2012

Можете да използвате следното:

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 |
person Taryn    schedule 24.12.2012

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 |
person MrMesees    schedule 23.03.2015

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

person Rishabh_hurr    schedule 10.12.2018