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

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

 

首先写一个简单的例子

 

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

insertinto @table

select1,'bag' union all

select2,null union all

select3,'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(nullis 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原创作品,转贴请注明作者和出处,留此信息。


版权声明:本文为maco_wang原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。