大した話ではないのですが、自分自身の意識に刻み込むために記録。
例えば下記のようなデータの場合。
テーブル名:employee
ID | name | department | post |
---|---|---|---|
1 | 田中太郎 | 営業部 | 社長 |
2 | 山本大介 | 営業部 | 部長 |
3 | 岡本花子 | 営業部 | null |
4 | 鈴木裕太 | システム部 | 係長 |
5 | 佐藤綾 | システム部 | null |
このテーブルでpost(役職)が「社長」以外の従業員を取得したいなーと思った時に、
下記のSQLを実行すると、、
select * from employee
where post != '社長';
結果がこうなります。
ID | name | department | post |
---|---|---|---|
2 | 山本大介 | 営業部 | 部長 |
4 | 鈴木裕太 | システム部 | 係長 |
postがnull、つまり一般社員のレコードは取得されていません。
SQLのwhere文の比較演算式で!=を使用した場合は、nullは判定対象に含まれてないのです。
一般社員の方も出力したいならこう。
select * from employee
where post != '社長'
and post is null;
感覚的に書くとけっこう騙される部分(自分だけかもしれないですが…)
だと思うので初学者の方は気をつけましょう。