仅当值不为空时才可以使用CONCAT_WS添加分隔符

时间:2017-04-03 00:57:29

标签: php mysql concat-ws

假设我有这张表

id  a       b
1   data    1234
2   data    

如果没有数据,我想与分隔符(但是)连接,不要添加分隔符。

如果我这样做

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

我在b

中获得了预期的1234,newData

但是我做了

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

我得到了b中的newData((但我只想要没有分隔符的newData)。

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

你可以试试这个伴侣:

# [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);

希望我能帮忙,干杯!