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细节做的不错,不过知道问题所在,在分组之前更新为一致即可。
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细节做的不错,不过知道问题所在,在分组之前更新为一致即可。
相关文章推荐
- JS原生 之------放烟花喽
- 矩形的面积
- 认知误区:HTTP Get 、Post的真正区别
- Vim编辑器运用的五个技巧
- 简单给数据库添加索引
- 圆的周长
- php版微信自动登录并获取昵称的方法
- Python增量循环删除MySQL表数据的方法
- JSONP(手写一个跨域组件)
- japan card
- CodeForces 623B【预处理+DP】
- 正差值
- 2016/09/22
- 最新最全的CSS规范指南
- C语言 计算某年某日是该年的第几天 014
- 《The.Go.Programming.Language.2015.11.pdf》之函数缓存实现
- php中使用websocket详解
- Replacing SQLite database while accessing it
- 带border的响应式布局
- 第52课: Spark大型项目广告点击项目数据建模