【SQL】SELECT文でのNULLの使用方法

NULLの使用方法

SQLを使うときにNULLであるかどうか判定するために「= NULL」としてしまうことはありませんか?今回はSELECT文でのNULLの使用方法を解説します。

SELECT文でのNULLの使用方法を確認しましょう。

目次

NULLとは

NULL(ヌル、ナル)は特殊な値であり、データが存在しないという意味を持ちます。文字列の空文字(”)や数値の0とは異なる特殊な値です。そのため、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の使用方法を確認したよ!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次