首页 >数据库 >mysql教程 >为什么 SQL 中 `NULL != NULL` 不总是返回 True?

为什么 SQL 中 `NULL != NULL` 不总是返回 True?

Barbara Streisand
Barbara Streisand原创
2025-01-03 08:49:39696浏览

Why Doesn't `NULL != NULL` Always Return True in SQL?

为什么 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn