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 件のコメント:
コメントを投稿