なぜunknownが存在し, NULLとは扱いが異なるのか
なぜSQLがunknownという奇妙な値を持っているかという理由は,
というのも,
したがって,
逆にこの観点から見ると,
世の中の大半のプログラマやSEは,
それに加え,
COLUMN NULLと空文字
NULLはunknownと勘違いしやすい記号ですが,
図a EmptyString
es |
NULL |
- 空文字の挿入
-
INSERT INTO EmptyString VALUES ('');
-
- NULLの挿入
-
INSERT INTO EmptyString VALUES (NULL);
-
したがって,
- 空文字の件数を選択
-
SELECT COUNT(*) FROM EmptyString WHERE es = '' GROUP BY es;
-
- NULLの件数を選択
-
SELECT COUNT(*) FROM EmptyString WHERE es IS NULL GROUP BY es;
-
ここまでは別に混乱はありません。空文字は,
この標準SQL違反の動作をするDBはOracleだけです。かつ,
- 注a)
- 「現在,
Oracle Databaseは, 長さが0 (ゼロ) の文字値をNULLとして処理します。ただし, この処理はOracleの今後のバージョンでも継続されるとはかぎらないため, 空の文字列をNULLとして処理しないことをお勧めします。」 (「Oracle Database SQL 言語リファレンス 11g リリース1 (11. 1) 」)