日期:2014-05-18  浏览次数:20763 次

在使用ISNULL时发现得到的结果还是NULL
首先说明一个:这个问题在客户那里出现的,整库备份的数据在我们这里没能错误重现,但在客户的机器上错误是可以重现的。
数据库版本SQLServer2000

用一个视图(表B)取出一个表,用RTRIM(ISNULL(FIELD,'') AS FIELD处理了一个字段
现用一个表(表A)与表B进了左联接。表A有数据
条件是B.FIEDL=''
最后取出不数据,但如果再用ISNULL(B.FIEDL,'')=''可以查出数据并且查出的数据FIELD字段值为NULL。

想问的是都有哪些可能性导至这种情况。

------解决方案--------------------
概念问题

一个表(表A)与表B进了左联接,那就允许表B的字段为null,B.FIEDL自然也是null

from A left join B on ... where ...
这里两个...都是写条件,但是意义是不同的




------解决方案--------------------
重建视图
------解决方案--------------------
直接 left join,不带条件的表连接
当 A 有空值的时候,查询出来就会有空值

有条件的连接 on ... ,比如:
left join ...on a.XXX=b.XXX ... where a.xxx is not null
这种连接方法就不会出现空值
------解决方案--------------------
如海兄所说,左连接的问题,
------解决方案--------------------
帮顶一下,人家说在客户哪儿会出现,备份回来不会出现???

------解决方案--------------------
把你的视图代码贴出来看看