SQLのIS NULLとIS NOT NULLの違いと使い方

SQLにおいてデータベースから情報を抽出または操作する際、特定の列がNULL値かそれ以外かを判定する必要がしばしば出てきます。この記事では、そのような場合に使うSQLの述語、`IS NULL`と`IS NOT NULL`の違いについて詳しく解説します。

目次

IS NULLとIS NOT NULLの基本的な使い方

`IS NULL`と`IS NOT NULL`は、SQLクエリにおいてNULL値を持つレコードと持たないレコードをフィルタリングするための述語です。

述語説明
IS NULL対象の列がNULL値を持つレコードをフィルタリング
IS NOT NULL対象の列がNULL以外の値を持つレコードをフィルタリング
テーブル1: IS NULLとIS NOT NULLの基本的な使い方

使い方の例

例えば、以下のような`employees`テーブルがあるとします。

ID名前年齢
1田中30
2佐藤NULL
3鈴木25
テーブル2: 例として用いるemployeesテーブル

`sCode]
SELECT * FROM employees WHERE 年齢 IS NULL;

上記のクエリを実行すると、年齢がNULLのレコード(佐藤さん)が抽出されます。

`sCode]
SELECT * FROM employees WHERE 年齢 IS NOT NULL;

このクエリを実行すると、年齢がNULLでないレコード(田中さんと鈴木さん)が抽出されます。

IS NULLとIS NOT NULLの違い

対象となる値

`IS NULL`はNULL値を対象としますが、`IS NOT NULL`はNULL以外のすべての値を対象とします。

使いどころ

`IS NULL`は、特定の列の値が未設定(NULL)であるレコードを探す場合に使用します。一方で、`IS NOT NULL`は、その列の値が何らかの値を持っている(NULL以外)レコードを探す場合に使用します。

まとめ

SQLにおいて`IS NULL`と`IS NOT NULL`は、NULL値の扱いに特化した非常に便利な述語です。`IS NULL`はNULL値を、`IS NOT NULL`はNULL以外の値を対象として、レコードをフィルタリングすることができます。これらの述語を使いこなすことで、より高度なデータの抽出や操作が可能になります。