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