然而,我对“p OR q”,“p AND q”的结果感到困惑,其中“p”等于“false”,“q”等于“unknown”。
在图中,“p OR q”的结果是“未知”,其中“p”等于“假”,“q”等于“未知”。但结果不应该是“假”吗?
此外,在图中,“p AND q”的结果是“假”,其中“p”等于“假”,“q”等于“未知”。但结果不应该是“未知”吗?
有人可以告诉我,我是对还是错?
答案 0 :(得分:4)
值NULL
在SQL中具有特殊的语义含义。 NULL
表示“未知”,因此任何依赖于已知值的逻辑运算都是未知的。
在FALSE OR NULL
的情况下,结果是未知的,因为结果取决于NULL
值实际可能是什么。如果NULL
为TRUE
,则表达式为TRUE
,但如果为FALSE
,则表达式为FALSE
。由于它可能是TRUE
或FALSE
,因此我们无法说明此表达式的值是什么,结果也是NULL
。
然而,在FALSE AND NULL
的情况下,我们可以说出结果会是什么。在此处,由于FALSE
和任何必须为FALSE
,因此结果必须为FALSE
,即使AND
另一侧的值为NULL
}是TRUE AND NULL
。
在此之后,NULL
必须为NULL
,因为取决于TRUE
可能代表的内容(即FALSE
或{{1}})整体表达会改变。