SQLで文字列結合をする際に、||(パイプ)やCONCATを使うと思います。
その際に、結合する文字列の一部にNULLが含まれる場合、結合結果がNULLになってしまう場合があります。
その場合の対応方法です。
対応方法
例えば、PostgreSQLの場合、
以下のようなSQLの場合、結果がNULLになります。
SELECT NULL || 'テスト' AS 結合結果
以下のようにCONCATを使って結合すれば、NULLは空文字に自動的に置き換えてくれて、結果は’テスト’となります。
SELECT CONCAT(NULL,'テスト') AS 結合結果
ただ、上記の書き方でもDBによっては結果がNULLになったり、NULLを空文字に置き換えてくれたりと動作が違うので、使用しているDBごとに調べる必要があります。
(おそらく)すべてのDBで対応できるやり方はCOALESCEを使うやり方です。COALESCEはほぼすべてのDBにある(らしい)
以下のように、NULLの可能性のあるカラムをCOALESCEで”(空文字)に置き換えるようにすれば、結果がNULLになることはない。
SELECT COALESCE(NULL,'') || 'テスト' AS 結合結果
コメント