SQL 指南書集 目次 - ray88’s diary
■3値倫理とは
普通の言語の真理値型がtrue,falseという2つの値を持つのに対し、SQLはそれに加えてunknownという第3の値を持つ
■SQLで3値倫理が採用されている理由→NULLがあるから
■NULLは2種類に分けて考えられる
①未知(Unknown):今はわからないが、条件が揃えばいずれわかる
(例)サングラスをかけている人の目の色(サングラスをはずせば目の色がわかる)
②適用不要(Not Appplicable):どうがんばってもわからない
(例)男性の出産回数(このようにありえないこと)
■「=NULL」ではなく「IS NULL 」と書かなくてはならない理由
NULLは値でも変数でもなく、ただの「そこに値がない」という目印のため、
比較述語(=、>、<、<>など)は使用できない。
--以下の式はすべて unknown に評価される 1 = NULL 2 > NULL 3 < NULL 4 <> NULL NULL = NULL
以下失敗例のSQL。クエリ結果で選択されるのはWHERE句の条件がtrueになる場合のみ。
falseやunknownの行は選択されない。
---NULLの検出に失敗するSQL SELECT * FROM tbl_A WHERE col_1 = NULL;