以下のようなテーブルがあるとき、NULLの値を持つカラムをselectでヒットさせたいとします。
1 2 3 4 5 6 7 8 9 10 11 |
mysql> select id,main_id from table; +-----+----------+ | id | main_id | +-----+----------+ | 1 | NULL | | 3 | NULL | | 5 | 3 | +-----+----------+ 3 rows in set (0.01 sec) mysql> |
やりがちなのは以下の方法。
1 2 3 4 |
mysql> select id,main_id from table where main_id=NULL; Empty set (0.00 sec) mysql> |
NULLの場合はこれではヒットしません。
では、どのように行うか。以下のように「<=>」を使って比較を行います。
1 2 3 4 5 6 7 8 9 10 |
mysql> select id,main_id from table where main_id<=>NULL; +-----+----------+ | id | main_id | +-----+----------+ | 1 | NULL | | 3 | NULL | +-----+----------+ 2 rows in set (0.01 sec) mysql> |
上の実行例の通り、NULLがヒットしているのがわかります。