2014-10-01 51 views
0

總而言之,我有一個更新查詢,它會將一串數據(例如SAVE15)粘貼到現有字段。目前,我預計這個領域已經有一些信息,所以我的價值觀被附加爲「,SAVE15」,這是一個逗號和空格分隔符。這現在可行,但很快我預計只有在字段不爲NULL時才需要插入逗號和空格。如果它爲空,我需要它插入「SAVE15」。這裏是我當前的查詢:MySQL CONCAT:僅當字段不爲NULL時才添加逗號/分隔符

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以在必要時添加分隔ONY:

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

Concat_WS的文檔告訴我們它將跳過任何空字段,但不會空字符串。因此,您必須刪除對IfNull(sfo.coupon_code, "")的調用,將Null值轉換爲空字符串。

+0

使用'concat_ws(',',sfo.coupon_code,,「SAVE15」)' – 2015-03-25 09:36:53