MySQL の IS NULL / IS NOT NULL
ここでは MySQL の IS NULL と IS NOT NULL 演算子についてご説明します。
サンプルデータベースのテーブルを使いますので、実際にスクリプトを実行してみたい方は、こちら のスクリプトを実行して school_db データベースを作成しておいてください。
MySQL の IS NULL 演算子
MySQL でクエリーでデータを取得する際に、あるカラムの値が NULL のレコードを取得したい時があると思います。
そんな時に WHERE 句で [カラム名] = NULL のように書いても、そのカラムの値が NULL のレコードを取得することはできません。
値が NULL のレコードを取得したい時は IS NULL 演算子を使って、[カラム名] IS NULL のように指定します。
IS NULL 演算子を使ってテーブルからデータを取得してみましょう。
次のような exam_results テーブルがあります。
この exam_results テーブルから score が NULL のデータのみを取得したい時は次のようにできます。
SELECT *
FROM exam_results
WHERE score IS NULL;
[実行結果]
score が NULL のレコードのみが取得できていますね。
ちなみに、IS NULL の代わりに = NULL を使うと次のようになります。
score = NULL は常に False になるので、取得されたレコードは 0 行です。
MySQL の IS NOT NULL 演算子
先ほどとは反対で、あるカラムの値が NULL ではないレコードを取得したい時があると思います。
そんな時に WHERE 句で [カラム名] <> NULL のように書いても、そのカラムの値が NULL ではないレコードを取得することはできません。
値が NULL ではないレコードを取得したい時は IS NOT NULL 演算子を使って、[カラム名] IS NOT NULL のように指定します。
IS NOT NULL 演算子を使ってテーブルからデータを取得してみましょう。
exam_results テーブルから score が NULL ではないデータのみを取得したい時は次のようにできます。
SELECT *
FROM exam_results
WHERE score IS NOT NULL;
[実行結果]
score が NULL 以外のレコードが取得できていますね。
IS NOT NULL の代わりに <> NULL を使うと次のようになります。
score <> NULL は常に False になるので、レコードはひとつも取得されません。
以上、MySQL の IS NULL と IS NOT NULL 演算子についてご説明しました。