首页 >数据库 >mysql教程 >为什么 SQL Server 中 NULL = NULL 返回 False?

为什么 SQL Server 中 NULL = NULL 返回 False?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-20 23:18:10497浏览

Why Does NULL = NULL Return False in SQL Server?

理解为什么 NULL = NULL 在 SQL Server 中为 False

在 SQL Server 中,WHERE 子句条件(例如 nullParam = NULL)的计算结果为 false。这可能看起来违反直觉,因为 NULL 通常表示缺失数据。 关键是理解 SQL Server 对 NULL.

的解释

NULL 不仅仅代表缺失的数据;它代表一个未知或不存在的值。 因此,比较两个 NULL 值本质上是不确定的。 我们不能明确地说两个未知数是否相等或不相等。这种不确定性会导致错误的评估。

这符合 ANSI SQL-92 标准。 默认情况下,SQL Server 使用 ANSI_NULLS ON 运行,强制执行此行为。 但是,设置 ANSI_NULLS OFF 会将比较结果更改为 true。

考虑这个例子:

<code class="language-sql">SET ANSI_NULLS OFF;

IF NULL = NULL
    PRINT 'true';
ELSE
    PRINT 'false';

SET ANSI_NULLS ON;

IF NULL = NULL
    PRINT 'true';
ELSE
    PRINT 'false';</code>

使用ANSI_NULLS OFF,输出为“true”。 使用 ANSI_NULLS ON(默认值),输出为“false”,演示此设置如何控制 SQL Server 对 NULL 比较的处理。 使用 IS NULL 是检查空值的正确方法。

以上是为什么 SQL Server 中 NULL = NULL 返回 False?的详细内容。更多信息请关注PHP中文网其他相关文章!

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