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