首页 >数据库 >mysql教程 >为什么 SQL Server 中'NULL = NULL”返回 False(以及'ansi_nulls”如何影响它)?

为什么 SQL Server 中'NULL = NULL”返回 False(以及'ansi_nulls”如何影响它)?

Barbara Streisand
Barbara Streisand原创
2025-01-20 23:09:09445浏览

Why `NULL = NULL` is False in SQL Server (and the `ansi_nulls` Setting)

了解为什么 NULL = NULL 在 SQL Server 中返回 False

SQL Server 对 NULL 值的处理通常会导致意外结果。 = 运算符在比较可空列时返回 <code>false</code>,因为 NULL 表示未知或缺失值。

WHERE 这样的 nullParam = NULL 子句条件总是评估为 <code>false</code>。这是因为不可能明确确认两个未知量之间的相等性。

SQL-92 标准规定了此行为:NULL = NULL 既不是 true 也不是 false;它是未定义的。

ansi_nulls 设置的影响

行为会根据 ansi_nulls 设置发生显着变化。 将 ansi_nulls 设置为 OFF 时,NULL = NULL 的计算结果令人惊讶地为 <code>true</code>。 如下所示:

代码示例:

<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

<code>true</code>

ansi_nulls ON

<code>false</code>

处理 NULL 的最佳实践

由于这种可变性,在使用 ansi_nulls 比较时了解 NULL 设置至关重要。 为了避免歧义,在检查 IS NULL 值时始终使用 IS NOT NULLNULL。 无论 ansi_nulls 设置如何,这都确保了一致且可预测的行为。 这是可靠 SQL 代码的推荐方法。

以上是为什么 SQL Server 中'NULL = NULL”返回 False(以及'ansi_nulls”如何影响它)?的详细内容。更多信息请关注PHP中文网其他相关文章!

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