仅当值不为空时才可以使用 CONCAT_WS 添加分隔符
Is it possible to use CONCAT_WS add separator only if value not empty
假设我有这个 table
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);
希望能帮到你,干杯!
假设我有这个 table
id a b
1 data 1234
2 data
我想用分隔符连接(但是)如果没有数据,不要添加分隔符。
如果我这样做
UPDATE `table` SET `b` = CONCAT_WS(',',`b`,'newData') WHERE `id` = '1'
我在 b
但我会
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);
希望能帮到你,干杯!