例えばこんな状態のテーブルがあるとします.
id | column_a | column_b | column_c |
---|---|---|---|
1 | a | b | c |
2 | a | b | NULL |
3 | a | NULL | c |
で, こんなqueryを実行すると...
SELECT id, CONCAT(column_a, column_b, column_c) AS column_abc FROM `test_201503`;
こうなってしまいます.
id | column_abc |
---|---|
1 | abc |
2 | NULL |
3 | NULL |
id 2の行も3の行も値が入ってるのにNULL扱いに...
これを避けるにはIFNULLを使用します.
SELECT id, CONCAT(IFNULL(column_a, ""), IFNULL(column_b, ""), IFNULL(column_c,"")) AS column_abc FROM `test_201503`;
すると, 期待していた値が表示されます.
id | column_abc |
---|---|
1 | abc |
2 | ab |
3 | ac |
そもそも文字列型のカラムだとNULLでなく空文字が入ってることが多いので再現少なくて気づきにくいんですよね.