PostgreSQLで文字型のカラム達を連結する時にNULLがあり得る場合はCONCATを使う。
しかし、PostgreSQLで文字列を連結する時、その文字型のカラムにNULLが入っている場合、全体がNULLとして返ってきてしまいます。
例えば下記のSQLはNULLが返ってくる。
SELECT 'Hello' || NULL || 'World';
そのため、この問題を回避するにはconcat関数を使います。
concat関数は、文字列を順番に連結しNULLの値を無視します。
SELECT CONCAT('Hello', NULL, 'World');
これならNULLが含まれていてもNULLを無視して文字列を連結し、結果は'HelloWorld'となります。
この問題で困ってconcat関数にたどり着くまで時間がかかったのを2回繰り返したのでメモ。