空不等式悖论已解决
在 SQL 中,测试两个可空列之间的相等性需要额外的检查来处理两列均为 NULL 的情况。这是因为 NULL 代表未知值,不能直接与另一个 NULL 进行比较。然而,在测试不等式时,可以使用更简单的方法。
可空列的不等式
最初,假设测试可空列之间的不等式需要复杂的条件:
WHERE ((A <> B) OR (A IS NOT NULL AND B IS NULL) OR (A IS NULL AND B IS NOT NULL))
但是,在许多 SQL 实现中,例如 Informix 11.5,一个更简单的条件就足够了:
WHERE (A <> B)
理解行为
此行为源于三元逻辑,其中 NULL 被视为未知值。考虑以下情况:
简化的不等式
因此,简化的 (A B)条件可以正常工作,因为它不会尝试直接比较 NULL 值。相反,它依赖于未知值不等于任何值的三元逻辑原理。
结论
在测试可空列之间的不等式时,使用简单条件(A<>B)。这是因为 NULL 作为一个未知值,无法直接与其他值(包括其本身)进行比较。采用三元逻辑方法(其中 NULL 被视为未知)简化了表达式并确保结果准确。
以上是为什么'A B”足以与 SQL 中的可空列进行不等式比较?的详细内容。更多信息请关注PHP中文网其他相关文章!