您的位置:首页 > 其它

null与空串引发的分组计算错误

2016-09-23 08:46 190 查看
     记录说明下数据库中的空串与null的区别,并比较oracle、sqlserver、mysql三者不同。oracle中null和空串是相同的,即都为null,但sqlserver和mysql两者有不同,所以需要留意其差异。

1、逻辑比较

      null 与任何值做逻辑运算得结果都为 false,包括和null本身。针对null使用 is null 判断。

2、算数运算

      null 和任何数值进行数学运算,结果都为 null。因此需要判断是否为空,oracle的nvl,sqlserver 的isnull,mysql的ifnull函数。

3、在一些内置函数中如果参数是null,其返回值也null,需要注意。

4、group by分组字段,如果为null,这分组和聚合函数返回值不同;下面截图是mysql的截图,sqlserver也是如此,oracle会认为null和空串都是null,所以分组保持一致。oracle细节做的不错,不过知道问题所在,在分组之前更新为一致即可。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: