前回
でCASE文の話をしましたが、これでNULL判定するときは気を付けましょう。
サンプルは前回と同じく下記のようなデータですが、4番目の null だけ追加しています。下記のテーブルをcallsとします。
id | driver_id | created 1 | 13 | 2018-11-19 11:23:25 2 | 15 | 2018-11-19 11:25:30 3 | 16 | 2018-11-19 11:26:30 4 | null | 2018-11-19 11:26:30
このテーブルからnullでないドライバーIDの場合は、1、そうでない場合は0を返したい場合、いかにも、下記のように判定できそうですが
SELECT id, CASE driver_id WHEN NULL THEN 0 ELSE 1 END FROM calls
なんとこれではダメです。全部、1が返ってきます。
NULL判定は、CASE文の中でしないといけないそうです。
SELECT id, CASE WHEN driver_id IS NULL THEN 0 ELSE 1 END FROM calls
これで、ちゃんと driver_id がNULLの時、0になります。