【SQL入門】NULLの判定


本項では、IS NULLやIS NOT NULL演算子について説明していきます。


NULLは比較できない?

数値や文字列などは、=、<、>などの比較述語で比較することができました。

では、NULLもといきたいところですが、これはうまくいきません。

このように比較述語での比較の結果は、すべてNULLとなってしまいます。
なぜこのようなことになるかというと、NULLとは具体的な値ではなく、何もデータが格納されていない状態を指すものだからです。

比較述語は、値と値を比較するためのものです。その為、値ではないNULLを比較しようとすると不明な結果(UNKNOWN)となりNULLが返ってくることになります。


NULLを判定する

カラムに格納されているデータがNULLかどうか判定するにはどうすればいいかというと「IS NULL」という述語を使用します。
では、実際に使用してみましょう。
以下のようなデータを持つテーブルがあったとします。

ここから、ageがNULLの行のみを選択してみます。

SELECT *
FROM teachers
WHERE age IS NULL;

年齢不詳のハナコさんのみ選択することができました。
また、NULL以外の行を選択したい場合は、否定形である「IS NOT NULL」を使用します。

SELECT *
FROM teachers
WHERE age IS NOT NULL;

ageがNULL以外の行が選択されたことが確認できました。


今回の学習ポイント

・比較述語ではNULLを判定できない
・NULLを判定するには「IS NULL」や「IS NOT NULL」を使用する。


練習問題

問題として使用するデータは「SQL練習問題」のものを使用しています。
以下からダウンロード可能です。
また、ダウンロードしたら以下のようにしてworldcup2014データベースを作成し、インポートしてください。
※worldcup2014.zip解凍してできるworldcup2014.sqlファイルをCドライブ直下に配置した場合。

worldcup2014.zip

CREATE DATABASE worldcup2014;

use worldcup2014

source C:\worldcup2014.sql
1.「goals」テーブルから、入力ミスでゴールを決めた選手情報(player_id)がないデータを選択してください。

答え

2.「goals」テーブルから、フランス対ホンジュラス戦(pairing_id=10)で、ゴールした選手がわかっているデータを選択してください

答え
  • このエントリーをはてなブックマークに追加

PAGE TOP