2

要約すると、データの文字列 (SAVE15 など) を既存のフィールドに追加する更新クエリがあります。現在、このフィールドにはすでにいくつかの情報が含まれていると予想されるため、値はコンマとスペースの区切り記号である「、SAVE15」として追加されます。これは今のところ機能しますが、すぐに、フィールドが 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" が挿入されました。2 番目のクエリは正しい方法だと思いますが、使い方が間違っているようです。

4

1 に答える 1

4

のドキュメントにConcat_WSよると、Null フィールドはスキップされますが、空の文字列はスキップされません。IfNull(sfo.coupon_code, "")したがって、Null 値を空の文字列に変換する呼び出しを削除する必要があります。

于 2014-10-01T20:24:11.063 に答える