【问题标题】:Is it possible to use CONCAT_WS add separator only if value not empty仅当值不为空时是否可以使用 CONCAT_WS 添加分隔符
【发布时间】:2017-04-03 00:57:29
【问题描述】:

假设我有这张桌子

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

有没有办法做到这一点?

【问题讨论】:

    标签: php mysql concat-ws


    【解决方案1】:

    你可以试试这个 Mate:

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

    希望我能帮上忙,干杯!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-27
      • 2014-11-26
      • 2012-02-24
      • 1970-01-01
      • 2022-09-23
      • 2018-01-19
      • 2011-08-12
      相关资源
      最近更新 更多