前记:总有人问我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,但null是null!
然后我们在赋值的时候,就不一样了
举个例子说明一下:
--测试
declare @i int
set @i=3;
set @i=null;
select @i as '@i';
/*结果
@i
-----------
NULL
*/
对于null来说,其实就是一句话:
判断的时候用"is",赋值的时候用"="