首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

奇怪了,isnull(a,0)与case when a is null then 1 else 0 end,该怎么处理

2011-12-27 
奇怪了,isnull(a,0)与case when a is null then 1 else 0 end字段a默认值就是为1,以前用isnull(a,0)得出的

奇怪了,isnull(a,0)与case when a is null then 1 else 0 end
字段a默认值就是为1,以前用isnull(a,0)得出的结果都正确,但现在不行了,得出的结果都为1,而用case   when   a   is   null   then   1   else   0   end却可以,不知道是什么原因.
tb1   表1
tb2   表2
select   tb1.fd1,isnull(tb2.a,0)   as   fd2
from   tb1   left   join   tb2   on   tb1.fd1=tb2.fd1

[解决办法]
case when a is null then 1 else 0 end

为null时返回1,不为null返回0,自然跟isnull(a,0)的结果不同。

很显然a字段不为空,可能是空字符串 ' '或者空格等不可见字符。
[解决办法]
1,
空字符串与null是不同的.
a不为空,则isnull(a,0)的值就是本身的值呀.即就是1

2.
case when a is null then 1 else 0 end 的意思是说,为null时为1,否则为0,现在不是null,所以结果就是0.

热点排行