SQLを使うときにNULLであるかどうか判定するために「= NULL」としてしまうことはありませんか?今回はSELECT文でのNULLの使用方法を解説します。
SELECT文でのNULLの使用方法を確認しましょう。
目次
NULLとは
NULL(ヌル、ナル)は特殊な値であり、データが存在しないという意味を持ちます。文字列の空文字(”)や数値の0とは異なる特殊な値です。そのため、NULLの取り扱いには十分に注意する必要があります。
UPDATE文でのNULLの取り扱い方法はこちらをご覧ください。
【SQL】UPDATE文でのNULLの使用方法
SQLを使うときにNULLに更新したいことやNULLである項目を更新したいことはありませんか?今回はUPDATE文でのNULLの使用方法を解説します。 UPDATE文でのNULLの使用方法…
NULL値を持つデータのSELECT
よくある間違い
SQLを使うときによくある間違いは、NULLであるかどうか判定するために 「= NULL」 としてしまうことである。このようにしてもNULLかどうかは判定できない。
NULL値を持つデータのSELECTを行うには、IS NULL、またはIS NOT NULLを使用します。
IS NULLの使い方
NULLであるデータをselectするにはIS NULLを使います。
SELECT * FROM TABLE_NAME WHERE column_name IS NULL
例としてスポーツテーブルからスポーツの列がNULLのデータを取得します。
テーブルの内容
SELECT * FROM SPORTSTABLE;
ID NAME SPORTS
------------------------
0001 YAMADA SOCCER
0002 TANAKA BASEBALL
0003 PENCHAN NULL
0004 SUZUKI TENNIS
0005 TAKAHASHI NULL
SQL
SELECT * FROM SPORTSTABLE WHERE SPORTS IS NULL;
SQLの実行結果
SELECT * FROM SPORTSTABLE WHERE SPORTS IS NULL;
ID NAME SPORTS
------------------------
0003 PENCHAN NULL
0005 TAKAHASHI NULL
IS NOT NULLの使い方
NULLでないデータをselectするにはIS NOT NULLを使います。
SELECT * FROM TABLE_NAME WHERE column_name IS NOT NULL;
例としてスポーツテーブルからスポーツの列がNULLでないデータを取得します。
テーブルの内容
SELECT * FROM SPORTSTABLE;
ID NAME SPORTS
------------------------
0001 YAMADA SOCCER
0002 TANAKA BASEBALL
0003 PENCHAN NULL
0004 SUZUKI TENNIS
0005 TAKAHASHI NULL
SQL
SELECT * FROM SPORTSTABLE WHERE SPORTS IS NOT NULL;
SQLの実行結果
SELECT * FROM SPORTSTABLE WHERE SPORTS IS NOT NULL;
ID NAME SPORTS
------------------------
0001 YAMADA SOCCER
0002 TANAKA BASEBALL
0004 SUZUKI TENNIS
IN句ではNULLが使えない
つぎの例の通りIN句ではNULLを使うことができない。
テーブルの内容
SELECT * FROM SPORTSTABLE;
ID NAME SPORTS
------------------------
0001 YAMADA SOCCER
0002 TANAKA BASEBALL
0003 PENCHAN NULL
0004 SUZUKI TENNIS
0005 TAKAHASHI NULL
ダメなSQLの例
SELECT * FROM SPORTSTABLE WHERE SPORTS IN ('SOCCER','TENNIS','BASEBALL',NULL);
IN句でNULLも取得したい場合にはOR IS NULL を使用しよう。
SELECT * FROM TABLE_NAME WHERE column_name IN (‥) OR column_name IS NULL
SQL
SELECT * FROM SPORTSTABLE WHERE SPORTS IN ('SOCCER','TENNIS','BASEBALL') OR SPORTS IS NULL;
SQLの実行結果
SELECT * FROM SPORTSTABLE WHERE SPORTS IN ('SOCCER','TENNIS','BASEBALL') OR SPORTS IS NULL;
ID NAME SPORTS
------------------------
0001 YAMADA SOCCER
0002 TANAKA BASEBALL
0003 PENCHAN NULL
0004 SUZUKI TENNIS
0005 TAKAHASHI NULL
まとめ
SQLでNULL値を持つデータのSELECTを行うには、IS NULL、またはIS NOT NULLを使用します。ぜひ覚えておきましょう。
SELECT文でのNULLの使用方法を確認したよ!