[英]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.