Oracle的null处理机制比较特殊(其实SQL Server也是如此,我说的特殊,主要是觉得跟我们经验相驳),经常在不注意的时候,就容易出错。
如:
三条数据,如果加上条件 and a.momemo <> 'MPR' 理论上来说应该查询到70005620这条数据,但是实际上
一条都没有查询到,那么这就出现一个问题 null<>'MPR' 为Flase。
Oracle 中 null 对运算符 = <> 返回的都是Flase。
所以每次统计数据,就要注意这一点,如果某个字段可能为null,就不能直接这样写条件,否则就会产生误差。
推荐语句:and nvl(a.momemo,'#') <> 'MPR' (当字段为null,就当成‘#’处理)。