SQLを使うときにNULLであるかどうか判定するために「= NULL」としてしまうことはありませんか?今回はSELECT文でのNULLの使用方法を解説します。
ペンちゃん
SELECT文でのNULLの使用方法を確認しましょう。
スポンサーリンク
NULLとは
NULL(ヌル、ナル)は特殊な値であり、データが存在しないという意味を持ちます。文字列の空文字(”)や数値の0とは異なる特殊な値です。そのため、NULLの取り扱いには十分に注意する必要があります。
UPDATE文でのNULLの取り扱い方法はこちらをご覧ください。

【SQL】UPDATE文でのNULLの使用方法SQLを使うときにNULLに更新したいことやNULLである項目を更新したいことはありませんか?今回はUPDATE文でのNULLの使用方法...
NULL値を持つデータのSELECT
よくある間違い
SQLを使うときによくある間違いは、NULLであるかどうか判定するために 「= NULL」 としてしまうことである。このようにしてもNULLかどうかは判定できない。
NULL値を持つデータのSELECTを行うには、IS NULL、またはIS NOT NULLを使用します。
IS NULLの使い方
NULLであるデータをselectするにはIS NULLを使います。
1 |
SELECT * FROM TABLE_NAME WHERE column_name IS NULL |
例としてスポーツテーブルからスポーツの列がNULLのデータを取得します。
テーブルの内容
1 2 3 4 5 6 7 8 |
SELECT * FROM SPORTSTABLE; ID NAME SPORTS ------------------ 0001 YAMADA SOCCER 0002 TANAKA BASEBALL 0003 PENCHAN NULL 0004 SUZUKI TENNIS 0005 TAKAHASHI NULL |
SQL
1 |
SELECT * FROM SPORTSTABLE WHERE SPORTS IS NULL; |
SQLの実行結果
1 2 3 4 5 |
SELECT * FROM SPORTSTABLE WHERE SPORTS IS NULL; ID NAME SPORTS ------------------ 0003 PENCHAN NULL 0005 TAKAHASHI NULL |
IS NOT NULLの使い方
NULLでないデータをselectするにはIS NOT NULLを使います。
1 |
SELECT * FROM TABLE_NAME WHERE column_name IS NOT NULL; |
例としてスポーツテーブルからスポーツの列がNULLでないデータを取得します。
テーブルの内容
1 2 3 4 5 6 7 8 |
SELECT * FROM SPORTSTABLE; ID NAME SPORTS ------------------ 0001 YAMADA SOCCER 0002 TANAKA BASEBALL 0003 PENCHAN NULL 0004 SUZUKI TENNIS 0005 TAKAHASHI NULL |
SQL
1 |
SELECT * FROM SPORTSTABLE WHERE SPORTS IS NOT NULL; |
SQLの実行結果
1 2 3 4 5 6 |
SELECT * FROM SPORTSTABLE WHERE SPORTS IS NOT NULL; ID NAME SPORTS ------------------ 0001 YAMADA SOCCER 0002 TANAKA BASEBALL 0004 SUZUKI TENNIS |
IN句ではNULLが使えない
つぎの例の通りIN句ではNULLを使うことができない。
テーブルの内容
1 2 3 4 5 6 7 8 |
SELECT * FROM SPORTSTABLE; ID NAME SPORTS ------------------ 0001 YAMADA SOCCER 0002 TANAKA BASEBALL 0003 PENCHAN NULL 0004 SUZUKI TENNIS 0005 TAKAHASHI NULL |
SQL
1 |
SELECT * FROM SPORTSTABLE WHERE SPORTS IN ('SOCCER','TENNIS','BASEBALL',NULL); |
SQLの実行結果
1 2 3 4 5 6 |
SELECT * FROM SPORTSTABLE WHERE SPORTS IS NOT NULL; ID NAME SPORTS ------------------ 0001 YAMADA SOCCER 0002 TANAKA BASEBALL 0004 SUZUKI TENNIS |
IN句でNULLも取得したい場合にはOR IS NULL を使用しよう。
1 |
SELECT * FROM TABLE_NAME WHERE column_name IN (‥) OR column_name IS NULL |
テーブルの内容
1 2 3 4 5 6 7 8 |
SELECT * FROM SPORTSTABLE; ID NAME SPORTS ------------------ 0001 YAMADA SOCCER 0002 TANAKA BASEBALL 0003 PENCHAN NULL 0004 SUZUKI TENNIS 0005 TAKAHASHI NULL |
SQL
1 |
SELECT * FROM SPORTSTABLE WHERE SPORTS IN ('SOCCER','TENNIS','BASEBALL') OR SPORTS IS NULL; |
SQLの実行結果
1 2 3 4 5 6 7 8 |
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の使用方法を確認したよ!