カテゴリ:

条件式関数

IS [ NOT ] NULL

式が NULL であるか、 NULL でないかを決定します。

構文

<expr> IS [ NOT ] NULL
Copy

戻り値

BOOLEAN を返します。

  • IS NULL を指定した場合に、式が NULL であれば値は TRUE です。それ以外の場合は、 FALSE を返します。

  • IS NOT NULL が指定された場合に、式が NULL でなければ値は TRUE です。それ以外の場合は、 FALSE を返します。

test_is_not_null テーブルを作成し、データをロードします。

CREATE OR REPLACE TABLE test_is_not_null (id NUMBER, col1 NUMBER, col2 NUMBER);
INSERT INTO test_is_not_null (id, col1, col2) VALUES 
  (1, 0, 5), 
  (2, 0, NULL), 
  (3, NULL, 5), 
  (4, NULL, NULL);
Copy

test_is_not_null テーブルのデータを表示します。

SELECT * 
  FROM test_is_not_null
  ORDER BY id;
Copy
+----+------+------+
| ID | COL1 | COL2 |
|----+------+------|
|  1 |    0 |    5 |
|  2 |    0 | NULL |
|  3 | NULL |    5 |
|  4 | NULL | NULL |
+----+------+------+

col1 内の値が NULL ではない行を返すには、 IS NOT NULL を使用します。

SELECT * 
  FROM test_is_not_null 
  WHERE col1 IS NOT NULL
  ORDER BY id;
Copy
+----+------+------+
| ID | COL1 | COL2 |
|----+------+------|
|  1 |    0 |    5 |
|  2 |    0 | NULL |
+----+------+------+

col2 内の値が NULL である行を返すには、 IS NULL を使用します。

SELECT * 
  FROM test_is_not_null 
  WHERE col2 IS NULL
  ORDER BY id;
Copy
+----+------+------+
| ID | COL1 | COL2 |
|----+------+------|
|  2 |    0 | NULL |
|  4 | NULL | NULL |
+----+------+------+

IS NOT NULL と IS NULL を組み合わせて使用し、以下の条件の いずれか を満たす行を返します。

  • col1 内の値は NULL ではありません。

  • col2 内の値は NULL です。

SELECT * 
  FROM test_is_not_null 
  WHERE col1 IS NOT NULL OR col2 IS NULL
  ORDER BY id;
Copy
+----+------+------+
| ID | COL1 | COL2 |
|----+------+------|
|  1 |    0 |    5 |
|  2 |    0 | NULL |
|  4 | NULL | NULL |
+----+------+------+

IS NOT NULL と IS NULL を組み合わせて使用し、以下の条件の 両方 を満たす行を返します。

  • col1 内の値は NULL ではありません。

  • col2 内の値は NULL です。

SELECT *
  FROM test_is_not_null
  WHERE col1 IS NOT NULL AND col2 IS NULL
  ORDER BY id;
Copy
+----+------+------+
| ID | COL1 | COL2 |
|----+------+------|
|  2 |    0 | NULL |
+----+------+------+