首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Server中ColumnName = Null与ColumnName为Null的区别

Server中ColumnName = Null与ColumnName为Null的区别
EN

Stack Overflow用户
提问于 2014-01-19 07:21:42
回答 3查看 1.6K关注 0票数 1

Server中的ColumnName = NullColumnName Is Null有什么区别?我对此进行了研究,但没有得到任何澄清。

实际上,我想检索列有空值。

代码语言:javascript
复制
Select * from Table1 where column1 is null 

此查询返回预期结果,但以下查询未给出

代码语言:javascript
复制
 Select * from Table1 where column1 = null 
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-19 07:57:34

使用普通运算符与null进行比较是不正确的。

这基本上是因为null是“未知的”,因此无法确定它是否是某个值。

必须使用特殊的语法is nullis not null来确定空。

票数 3
EN

Stack Overflow用户

发布于 2014-01-19 07:56:43

比较上使用NULL运算符将导致un Unkown result

请看下面的示例:

代码语言:javascript
复制
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

这将导致:

代码语言:javascript
复制
Unknown
val1 IS NULL
val1 IS NULL

请注意,将ANSI_NULLS更改为OFF将改变=运算符的行为,并将返回TRUE for NULL = NULL

无论如何,IMHO (我认为流行的观点是),最佳实践是使用为空

票数 2
EN

Stack Overflow用户

发布于 2014-01-19 07:30:00

“是空”是正确的方式。这就像<>和!=不相等的区别。这是标准。

下面是Microsoft文档:http://technet.microsoft.com/en-us/library/ms188795.aspx

要确定表达式是否为空,请使用NULL或NULL,而不是比较运算符(例如=或!=)。当任一参数或两个参数都为空时,比较运算符返回未知值。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21214231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档