風待ち

プログラミングの勉強や日々の出来事のログなど

PostgreSQLで文字型のカラム達を連結する時にNULLがあり得る場合はCONCATを使う。

SQLで文字を連結する時は||演算子を使います。

しかし、PostgreSQLで文字列を連結する時、その文字型のカラムにNULLが入っている場合、全体がNULLとして返ってきてしまいます。

例えば下記のSQLはNULLが返ってくる。

SELECT 'Hello' || NULL || 'World';

そのため、この問題を回避するにはconcat関数を使います。

concat関数は、文字列を順番に連結しNULLの値を無視します。

SELECT CONCAT('Hello', NULL, 'World');

これならNULLが含まれていてもNULLを無視して文字列を連結し、結果は'HelloWorld'となります。

この問題で困ってconcat関数にたどり着くまで時間がかかったのを2回繰り返したのでメモ。