简述一个关于null的理解误区:null不等于null--【叶子】

来源:互联网 发布:java 身份证照片识别 编辑:程序博客网 时间:2024/05/16 13:41

前记:总有人问我null为什么不等于null

 

首先写一个简单的例子

 

declare @table table(id int ,col varchar(20))

insert into @table

select 1,'bag' union all

select 2,null union all

select 3,'ball'

 

select * from @table where col<>null

select * from @table where col =null

/*

两句话的结果一样:

id          col

----------- --------------------

 

都是没有数据

*/

 

为什么呢?

因为null<>null

 

 

然后我们用下面的语句来测试一下

 

 

if(null=null)

select 'null=null' as result_a

else

select 'null<>null' as result_a

 

if(null is null)

select 'null is null' as result_b

else

select 'null is not null' as result_b

 

/*

result_a

----------

null<>null

 

result_b

------------

null is null

*/

 

结果说明了null不等于null,但nullnull

 

然后我们在赋值的时候,就不一样了

举个例子说明一下:

 

--测试

declare @i int

set @i=3;

set @i=null;

select @i as '@i';

/*结果

@i

-----------

NULL

*/

 

对于null来说,其实就是一句话:

 

判断的时候用"is",赋值的时候用"="

@【叶子】http://blog.csdn.net/maco_wang 原创作品,转贴请注明作者和出处,留此信息。

原创粉丝点击