读书人

奇怪了,isnull(a,0)与case when a is

发布时间: 2011-12-27 22:22:54 作者: rapoo

奇怪了,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.

读书人网 >SQL Server

热点推荐