33

我需要更新表名(col1name)

如果已经有数据,我需要附加值'a,b,c'如果它是NULL,我需要添加值'a,b,c'

我知道有一个 CONCAT 参数,但不确定 SQL 语法是什么。

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

以上是正确的吗?

4

5 回答 5

69

试试这个查询:

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

请参阅此 sql fiddle 演示。

于 2012-12-24T11:51:14.470 回答
9

这应该这样做:

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');
于 2012-12-24T11:42:10.963 回答
4

您可以使用以下内容:

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 |
于 2012-12-24T11:41:32.710 回答
0

IFNULL(column,''),保存所有 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 |
于 2015-03-23T09:32:09.277 回答
-1

你为什么要写 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')

于 2018-12-10T15:01:02.307 回答