首页 > 数据库 > mysql教程 > 为什么 NULL = NULL 在 SQL Server 中计算结果为 False?

为什么 NULL = NULL 在 SQL Server 中计算结果为 False?

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

Why Does NULL = NULL Evaluate to False in SQL Server?

SQL Server 独特的 NULL 比较:为什么 NULL = NULL 经常是假

SQL Server 处理 NULL 值的方式与许多其他编程语言不同。 一个常见的混淆来源是 NULL = NULL 通常计算为 FALSE。这不是一个错误;而是一个错误。这是一个深思熟虑的设计选择,植根于 NULL 本身的定义。

在 SQL Server 中,NULL 表示未知或缺失值。 因此,比较两个 NULL 就像比较两个未知数 – 不可能明确地说它们是否相等,因为它们的值未定义。 NULL = NULL 的结果通常是 FALSE(或者有时是 NULL,具体取决于上下文和系统设置)。

此行为源于 ANSI SQL-92 标准。但是,了解 SQL Server 中 ansi_nulls 设置的影响至关重要。

ansi_nulls

的角色

ansi_nulls 设置决定 SQL Server 如何解释 NULL 比较。

  • ansi_nulls ON(默认): 在此设置(默认)下,NULL = NULL 计算结果为 FALSE,与 ANSI SQL-92 标准保持一致。

  • ansi_nulls OFF: 使用此设置,NULL = NULL 的计算结果为 TRUE。此行为反映了许多其他编程语言中处理 NULL 的方式,其中它通常被认为是表示未定义状态的特殊值。

示例:

以下代码片段演示了差异:

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,两个IF语句都会打印“TRUE”。 对于 ansi_nulls ON,第一个 IF 语句将打印“FALSE”,而第二个

语句也将打印“FALSE”

ansi_nulls理解

设置和 NULL 比较固有的歧义对于编写健壮且无错误的 SQL Server 代码至关重要。 请始终注意查询中如何处理 NULL,以避免意外结果。

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

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