簡體   English   中英

僅當值不為空時才可以使用CONCAT_WS添加分隔符

[英]Is it possible to use CONCAT_WS add separator only if value not empty

假設我有這張桌子

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而沒有分隔符))。

有沒有辦法做到這一點 ?

您可以嘗試一位伴侶:

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

希望我能幫助,加油!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM