SQL基礎 NULLの扱い方

本記事では、SQLでのNULLの扱い方について紹介します。

NULLとは

このようなデータベースがあるとします。

idnameprice
1唐揚げ弁当480
2オムライス
3塩おにぎり100
4のり弁当450
5クッキー120
6幕の内弁当
7鮭おにぎり
8プリンパフェ350
9牛丼
10シーザーサラダ220
goodsテーブル

一部の商品の値段が空白になっています。例:name=オムライス

このようになにもデータが入っておらず、中身がなにか分からないとき、NULLを返します。

NULLは、ヌルと呼びます。

では、次にこのNULLの要素を取り出そうと思います。

IS NULL

上記のgoodsテーブルからNULLのレコードを取り出そうと思います。

SELECT * FROM goods
WHERE price IS NULL;

これでNULLのレコードを取り出すことが出来ました。

よくある間違いとして、=NULLとしてしまう点です。

=は、比較演算子で値を比較します。NULLは、データが存在しないので、比較できません。

したがって、FALSE(偽)で、NULLのレコードを取り出すことができません。

✖間違い

SELECT * FROM goods
WHERE price = NULL;

IS NOT NULL

対して、NULLでないレコードも取り出すこともできます。

そのようなときはIS NOT NULLを用います。

SELECT * FROM goods
WHERE price IS NOT NULL;

また、NOT演算子のように先頭に持ってきても同様な結果が出ます。

SELECT * FROM goods
WHERE NOT price IS NULL;

よくある間違いとして、先ほどと同様、=を用いてしまう点です。

NULLは、データがないので、比較できません。したがって、NULLでないレコードを取り出すことができません。

✖間違い

SELECT * FROM goods
WHERE NOT price = NULL;