小编典典

为什么NULL = NULL在SQL Server中评估为false

sql

在SQL Server中,如果
nullParam=NULL在where子句中,则其总值为false。这是违反直觉的,并导致了我很多错误。我确实了解IS NULLIS NOT NULL关键字是正确的方法。但是,为什么SQL Server会以这种方式表现呢?


阅读 233

收藏
2021-05-05

共1个答案

小编典典

在这种情况下,请将null视为“未知”(或“不存在”)。在这两种情况下,您都不能说它们相等,因为您不知道它们的价值。因此,null =
null的计算结果不为true(false或null,具体取决于您的系统),因为您不知道要说它们相等的值。此行为在ANSI SQL-92标准中定义。

编辑:这取决于您的ansi_nulls设置。如果您关闭ANSI_NULLS,则此值将为true。运行以下代码作为示例…

set ansi_nulls off

if null = null
    print 'true'
else
    print 'false'


set ansi_nulls ON

if null = null
    print 'true'
else
    print 'false'
2021-05-05