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

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

Barbara Streisand
发布: 2025-01-20 23:09:09
原创
518 人浏览过

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>。 如下所示:

代码示例:

SET ANSI_NULLS OFF;

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

SET ANSI_NULLS ON;

IF NULL = NULL
    PRINT 'true';
ELSE
    PRINT 'false';
登录后复制

输出:

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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板