[ Oracle ] SQL の null 判定は等号(=)、不等号(<>)ではなく is null, is not null

Pocket

ここでは、Oracle における SQL の null 判定についての確認を行っています。以下のテーブルを作成して、NULL_VALUE 列が null の行と、そうではない行を挿入して select の null 検索を検証してみます。

スポンサーリンク

ここで使用するテストデータ

ここで使用するテストデータは、NULL_VALUE 列に null と それ以外の値(5)が入った 2レコードのデータを使用します。

CREATE TABLE TEST_NULL
(
    ID           VARCHAR2(12),
    NULL_VALUE   NUMBER
)

SQL> select * from test_null;

ID           NULL_VALUE
------------ ----------
null
not null              5

検索条件に等号、不等号を使用して null 検索する

SQL の null 判定に等号 ( = )、不等号 ( <> ) を使用しても期待するようにレコードは取得できない結果となっています。SQL エラーとなってくれると分かりやすいのですが、世の中なかなか上手くいきません。

SQL> // 等号(=)を使用して検索
SQL> select * from test_null where null_value = null;

レコードが選択されませんでした。

SQL> // 不等号(<>)を使用して検索
SQL> select * from test_null where null_value <> null;

レコードが選択されませんでした。

検索条件に is null、is not null を使用して null 検索する

Oracle では、等号、不等号を使って null 判定を行うのではなく、is null または is not null を使用して null 判定をする必要があります。以下のように期待する通りにレコードが取得できています。

SQL> // is null を使用して検索
SQL> select * from test_null where null_value is null;

ID           NULL_VALUE
------------ ----------
null

SQL> // is not null を使用して検索
SQL> select * from test_null where null_value is not null;

ID           NULL_VALUE
------------ ----------
not null              5

SMAP の解散はなくなったようですが、あの生放送での会見は微妙でした。

2016-09-23 追記

結局 SMAP は2016年一杯で解散するようです。紅白も辞退するようですが、NHK は説得できるのでしょうか?仮に出場するとなればやはり、「 世界に一つだけの花 」 なんでしょうね。

スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *