MySQL CONCAT:仅当字段为NOT NULL时才添加逗号/分隔符

时间:2014-10-01 20:00:44

标签: mysql concat concat-ws

总而言之,我有一个更新查询,它将把一串数据(例如SAVE15)添加到现有字段。目前,我预计此字段已经包含一些信息,因此我的值将附加为“,SAVE15”,这是一个逗号和空格分隔符。这暂时有效但很快我预计只有在字段为NOT NULL时才需要插入逗号和空格。如果它为null,我需要它插入“SAVE15”。这是我目前的查询:

UPDATE sales_flat_order sfo
INNER JOIN sales_flat_order_grid sfog
ON sfog.entity_id = sfo.entity_id
SET sfo.coupon_code = concat(IFNULL(sfo.coupon_code, ""),", SAVE15")
WHERE sfog.increment_id = "12345678";

这是我尝试使用CONCAT_WS在必要时添加分隔符:

UPDATE sales_flat_order sfo
INNER JOIN sales_flat_order_grid sfog
ON sfog.entity_id = sfo.entity_id
SET sfo.coupon_code = CONCAT_WS(',',IFNULL(sfo.coupon_code, ""),"SAVE15")
WHERE sfog.increment_id = "12345678";

我认为它最初工作但是然后它将“,SAVE15”插入到空字段中。我相信第二个查询是正确的方法,但我似乎错误地使用它。

1 个答案:

答案 0 :(得分:1)

Concat_WS的文档告诉我们它将跳过任何Null字段但不会跳过空字符串。因此,您必须删除将{Null值转换为空字符串的IfNull(sfo.coupon_code, "")调用。

相关问题