为什么 NULL 不等式并不总是返回 True
当将 NULL 值与不等式运算符(“!=”)进行比较时,它是通常假设结果应该为 true,因为 NULL 不等于其自身。但是,在 SQL 等某些上下文中,这种假设是无效的。
SQL 的三元逻辑
在 SQL 中,NULL 表示未知值。这就引入了超越真假的第三种逻辑状态,称为“未知”。因此,与 NULL 的不等式比较遵循三元逻辑,其中结果可以是以下三个之一选项:
示例:
考虑下列语句:
WHERE (A <> B)
如果 A 和 B 都为 NULL,上面的表达式将返回“unknown”,因为无法确定它们是否真正不相等或者是否都未知。
不等式检查的含义
这个三元逻辑表明简单的不等式检查NULL 可能并不总是返回 true。为了确保结果准确,需要使用“IS NULL”和“IS NOT NULL”显式检查 NULL 条件。
例如,以下表达式可以正确处理与 NULL 的不等式比较:
WHERE ((A <> B) OR (A IS NOT NULL AND B IS NULL) OR (A IS NULL AND B IS NOT NULL))
通过合并这些显式检查,数据库可以为涉及 NULL 值的所有可能情况确定正确的逻辑结果(真、假或未知)。
以上是为什么 SQL 中 `NULL != NULL` 不总是返回 True?的详细内容。更多信息请关注PHP中文网其他相关文章!