我有这个查询
Declare @value int
Select 21 where 1 <> @value
我得到0结果。
这怎么可能是合理的。 1不能等于null !!!
答案 0 :(得分:2)
必须按以下方式处理NULL,
等于null:
Column IS NULL
不等于null:
Column IS NOT NULL
或者:
ISNULL(Column,-1) = -1
ISNULL(Column,-1) <> -1
答案 1 :(得分:1)
NULL是未知的标记,它不是值 - 意味着它可以包含1,因此您的查询返回0记录。以下查询将返回记录。
select 21 where 1 is not null
答案 2 :(得分:0)
你应该考虑ANSI_NULL,根据它的设置方式,你会得到不同的结果。
当ANSI_NULLS设置为ON时
SET ANSI_NULLS ON
GO
IF (NULL=NULL)
PRINT 'EQUAL'
ELSE
PRINT 'NOT EQUAL'
GO
结果:NOT EQUAL
当ANSI_NULLS设置为OFF时(NULL = NULL(;)
SET ANSI_NULLS OFF
GO
IF (NULL=NULL)
PRINT 'EQUAL'
ELSE
PRINT 'NOT EQUAL'
GO
结果:EQUAL