2020.12.25
【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ドライブ直下に配置した場合。 [sql] CREATE DATABASE worldcup2014;
以下からダウンロード可能です。
また、ダウンロードしたら以下のようにしてworldcup2014データベースを作成し、インポートしてください。
※worldcup2014.zip解凍してできるworldcup2014.sqlファイルをCドライブ直下に配置した場合。 [sql] CREATE DATABASE worldcup2014;
use worldcup2014
source C:\worldcup2014.sql
[/sql]
2.「goals」テーブルから、フランス対ホンジュラス戦(pairing_id=10)で、ゴールした選手がわかっているデータを選択してください