朝会発表テーマ

Oracleの「NULL」について

1 言葉の意味

「空文字列」
・・・ マニュアルでは「長さが0(ゼロ)の文字値」。値が設定されていない文字列

「NULL」
・・・ マニュアルでは「行のある列の値がない場合」。データが存在しない

・二つの意味は普段異なる意味として使用される。
→Oracle DataBaseでは、空文字列を同一視する仕様がある

2 実験(11g Express Edition上で実行)

[1] 以下のようなテーブルを用意

列名
ID数値型
NAME文字列型
テーブル定義

[2] データを挿入

以下のSQLを発行

INSERT INTO M_FRUITS(ID, NAME) VALUES(1, 'apple');
INSERT INTO M_FRUITS(ID, NAME) VALUES(2, 'banana');
INSERT INTO M_FRUITS(ID, NAME) VALUES(3, NULL); ←NULLを挿入
INSERT INTO M_FRUITS(ID, NAME) VALUES(4, ''); ←空の文字列

[3] データを抽出

以下のSQLを発行

SELECT *
  FROM M_FRUITS
 WHERE NAME IS NULL

実行結果

3 参考資料

Oracle® Database SQL言語リファレンス – NULL

NULL

コメント