首页 > 数据库 > mysql教程 > 为什么'A B”足以与 SQL 中的可空列进行不等式比较?

为什么'A B”足以与 SQL 中的可空列进行不等式比较?

Susan Sarandon
发布: 2025-01-03 04:05:38
原创
677 人浏览过

Why Does `A  B` Suffice for Inequality Comparisons with Nullable Columns in SQL?

空不等式悖论已解决

在 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) 返回未知。
  • 如果 A 和 B 都为 NULL,则不等式测试也是未知的。这是因为 NULL 既不等于也不不等于自身。

简化的不等式

因此,简化的 (A B)条件可以正常工作,因为它不会尝试直接比较 NULL 值。相反,它依赖于未知值不等于任何值的三元逻辑原理。

结论

在测试可空列之间的不等式时,使用简单条件(A<>B)。这是因为 NULL 作为一个未知值,无法直接与其他值(包括其本身)进行比较。采用三元逻辑方法(其中 NULL 被视为未知)简化了表达式并确保结果准确。

以上是为什么'A B”足以与 SQL 中的可空列进行不等式比较?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板