特定レコードだけNULLになってしまう現象
簡単なSQLで住所と言うデータ
delivery_pref + delivery_city + delivery_address1 + ' ' + delivery_address2というフィールドで、
ココに注意
出力がNULLになってしまう現象
がでました。
全部がNULLになるとかなら何かのエラーかと判断しますが、ある特定のデータだけなのです。
NULLになってしまう原因
delivery_pref + delivery_city + delivery_address1 + ' ' + delivery_address2
どうも、フィールドを足して加工しているデータにおいて
1つのフィールドに、NULLがあると、その結果はNULLになることがわかりました。
つまり、
ココがポイント
フィールド内容 + NULL(あるフィールド) = NULL
NULLがあっても足して出力結果を出す方法
数値の場合は、NULLだったら「0」を加算するようにします。
ISNULL(フィールドA,0) + ISNULL(フィールドB,0) + ISNULL(フィールドC,0) = NULLにならない!
文字列の場合は、
ISNULL(フィールドA,””) + ISNULL(フィールドB,””) + ISNULL(フィールドC,””) = NULLにならない!
今回の自分のケースでは、下記のようにSQLをしてフィールドを結合させた住所の部分でNULLにしないようにしました。
SELECT DISTINCT dbo.amazon_shipped.arrange_date AS 投入番号, dbo.amazon_shipped.order_id AS 受注番号, dbo.[order].delivery_pref + dbo.[order].delivery_city + dbo.[order].delivery_address1 + ' ' + ISNULL(dbo.[order].delivery_address2, '') AS 住所 FROM dbo.amazon_shipped INNER JOIN dbo.[order] ON dbo.amazon_shipped.order_id = dbo.[order].id
NULLになる可能性があるフィールドを加えて表示させようとするときは、ちょっと注意が必要ですね。