【SQL】文字列結合時にNULLが入る可能性がある場合の結合の仕方

スポンサーリンク

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 結合結果

コメント

タイトルとURLをコピーしました