2

总而言之,我有一个更新查询,它会将一串数据(例如 SAVE15)附加到现有字段。目前,我预计该字段中已经包含一些信息,因此我的值附加为“,SAVE15”,这是一个逗号和空格分隔符。这暂时有效,但很快我预计只有在字段不为空时才需要插入逗号和空格。如果它为空,我需要它插入“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”。我相信第二个查询是正确的方法,但我似乎使用不正确。

4

1 回答 1

4

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

于 2014-10-01T20:24:11.063 回答