- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Stack Overflow post 上看到了下图
但是,我对“p OR q”、“p AND q”的结果感到困惑,其中“p”等于“false”,“q”等于“unknown”。
在图中,“p OR q”的结果是“unknown”,其中“p”等于“false”,“q”等于“unknown”。但结果不应该是“假”吗?
此外,在图中,“p AND q”的结果为“false”,其中“p”等于“false”,“q”等于“unknown”。但是结果不应该是“未知”吗?
谁能告诉我我是对还是错?
最佳答案
值NULL
在SQL 中有特殊的语义。 NULL
表示“未知”,因此任何依赖于已知值的逻辑操作都是未知的。
在 FALSE OR NULL
的情况下,结果是未知的,因为结果取决于 NULL
值可能实际是什么。如果 NULL
为 TRUE
,则表达式为 TRUE
,但如果为 FALSE
,则表达式将是 FALSE
。由于它可能是 TRUE
或 FALSE
,因此我们无法说明此表达式的值是什么,结果也是 NULL
。
但是,在 FALSE AND NULL
的情况下,我们可以说出结果。这里,因为 FALSE
和 anything 必须是 FALSE
,所以结果必须是 FALSE
,即使值在 AND
的另一边是 NULL
。
在此之后,TRUE AND NULL
必须是 NULL
,因为这取决于 NULL
可能代表什么(即 TRUE
or FALSE
) 整个表达式的值会改变。
关于mysql - 混淆 "p OR q", "p AND q",其中 "p"等于 "false", "q"等于 "unknown",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42777700/
我是一名优秀的程序员,十分优秀!