我需要更新的表名(col1name)
如果已经有数据,我需要与价值观“A,B,C”如果是空的,我需要添加值“A,B,C”追加它
我知道有一个CONCAT说法,但不能确定SQL语法是什么。
update tablename set col1name = concat(ifnull(col1name, 'a,b,c'), 'a,b,c')
就是上面是否正确?
我需要更新的表名(col1name)
如果已经有数据,我需要与价值观“A,B,C”如果是空的,我需要添加值“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');
请参阅该SQL小提琴演示。
这应该这样做:
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拨弄演示
样本数据:
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' 设置col1name = CONCAT(IFNULL(col1name, “”),“ A,b,C'),而不是这个可以直接写集合col1name = CONCAT(col1name, 'A,b,C')