2017-04-03 73 views
0

让说我有这个表是否有可能使用CONCAT_WS添加分隔只有当值不为空

id a  b 
1 data 1234 
2 data  

我想与分离器(但)到Concat的,如果没有数据,不添加分隔符。

如果我做

UPDATE `table` SET `b` = CONCAT_WS(',',`b`,'newData') WHERE `id` = '1' 

我得到预期的1234,newData在b

但II做

UPDATE `table` SET `b` = CONCAT_WS(',',`b`,'newData') WHERE `id` = '2' 

我得到的,newData在b((但我只想要newData没有分离器))。

有没有办法做到这一点?

回答

1

你可以试试这个伴侣:

# [A] sample result set for checking 
SELECT 
    `a`, `b`, 
    IF(
     (`a` IS NOT NULL AND `a` != '') 
     AND (`b` IS NOT NULL AND `b` != ''), 
     CONCAT_WS(',', `a`, `b`), 
     REPLACE(CONCAT_WS(',', `a`, `b`), ',', '') 
    ) `result` 
FROM `table` 
WHERE `id` IN (1, 2); 

如果结果集[A]满足你的需要,你可以使用[B]


更新查询脚本进行:

# [B] process query for the new values 
UPDATE `table` 
SET `b` = IF(
    (`a` IS NOT NULL AND `a` != '') 
    AND (`b` IS NOT NULL AND `b` != ''), 
    CONCAT_WS(',', `a`, `b`), 
    REPLACE(CONCAT_WS(',', `a`, `b`), ',', '') 
) 
WHERE `id` IN (1, 2); 

希望我能帮助,欢呼!

+0

谢谢,它像一个魅力工作;) –

相关问题