3値論理とは、論理計算において、TRUEとFALSEのほかに、UNKNOWN(未知)という状態がある論理のことだ。さらにNot Applicable(適用不能)も含めた4値論理という考え方もあるようですが、ここでは考えない。
つまりTRUEなのか、FALSEなのかわからない状態のことをUNKNOWNといっている。そのためUNKNOWN同士の論理演算とNOT UNKNOWNはUNKNOWNになる。また、UNKNOWNとのANDは、FALSEに対するものは必ずFALSEだが、それ以外はUNKNOWNになる。まとめると、
x | NOT x |
TRUE | FALSE |
UNKNOWN | UNKNOWN |
FALSE | TRUE |
AND | TRUE | UNKNOWN | FALSE |
TRUE | TRUE | UNKNOWN | FALSE |
UNKNOWN | UNKNOWN | UNKNOWN | FALSE |
FALSE | FALSE | FALSE | FALSE |
OR | TRUE | UNKNOWN | FALSE |
TRUE | TRUE | TRUE | TRUE |
UNKNOWN | TRUE | UNKNOWN | UNKNOWN |
FALSE | TRUE | UNKNOWN | FALSE |
となる。
ちなみに、NULLとUNKNOWNはSQL的には同じもの。ここがわかっていないと、NULLが絡んできた瞬間に、論理がわからなくなる。
誰だ、こんなこと考え付いたのは。。
0 件のコメント:
コメントを投稿