Server中的ColumnName = Null和ColumnName Is Null有什么区别?我对此进行了研究,但没有得到任何澄清。
实际上,我想检索列有空值。
Select * from Table1 where column1 is null 此查询返回预期结果,但以下查询未给出
Select * from Table1 where column1 = null 发布于 2014-01-19 07:57:34
使用普通运算符与null进行比较是不正确的。
这基本上是因为null是“未知的”,因此无法确定它是否是某个值。
必须使用特殊的语法is null和is not null来确定空。
发布于 2014-01-19 07:56:43
在比较上使用NULL运算符将导致un Unkown result
请看下面的示例:
Declare @temp table
(
val1 int,
val2 int
)
INSERT INTO @temp
VALUES (1,NULL),
(NULL,1),
(NULL,NULL)
SELECT CASE
WHEN val1 > val2 THEN 'Val 1 greater'
WHEN val2 > val1 THEN 'val 1 smaller'
WHEN val1 = val2 THEN 'Val1 is equal to val 2'
WHEN val1 = NULL THEN 'val1 = NULL'
WHEN val1 IS NULL THEN 'val1 IS NULL'
ELSE 'Unknown'
END result
FROM @temp这将导致:
Unknown
val1 IS NULL
val1 IS NULL请注意,将ANSI_NULLS更改为OFF将改变=运算符的行为,并将返回TRUE for NULL = NULL
无论如何,IMHO (我认为流行的观点是),最佳实践是使用为空。
发布于 2014-01-19 07:30:00
“是空”是正确的方式。这就像<>和!=不相等的区别。这是标准。
下面是Microsoft文档:http://technet.microsoft.com/en-us/library/ms188795.aspx
要确定表达式是否为空,请使用NULL或NULL,而不是比较运算符(例如=或!=)。当任一参数或两个参数都为空时,比较运算符返回未知值。
https://stackoverflow.com/questions/21214231
复制相似问题