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

前记:总有人问我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 原创作品,转贴请注明作者和出处,留此信息。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值