SQLは3値論理
SQLはtrue, false, unknownの3値論理である。
3値論理になる理由はNULLがあるから。
NULLは値でも変数でもない。
比較述語を使えるのは比較する物が値の時だけ。
NULLを正しく判別するためにはISNULLを使う
下記は全てunknownになる
- data = NULL
- data > NULL
- data < NULL
- data <> NULL
- NULL = NULL
NOTの真理値表
x |
NOT x |
true |
false |
NULL |
unknown |
false |
true |
ANDの真理値表
x |
true |
unknown |
false |
true |
true |
unknown |
false |
NULL |
unknown |
unknown |
false |
false |
false |
false |
false |
ORの真理値表
x |
true |
unknown |
false |
true |
true |
true |
true |
NULL |
true |
unknown |
unknown |
false |
true |
unknown |
false |
NOT INはNULLが含まれると結果は空になる
EXISTSはNULLがあってもtrueとfalseしか返さない
達人に学ぶSQL徹底指南書より