SQL中sum(),avg()等统计结果为null的解决方法
来源:互联网 发布:js一次取指定数组元素 编辑:程序博客网 时间:2024/05/21 04:23
在SQL语句中使用集合函数count(),返回结果肯定为非负整数,这也是用来判断数据有无的一个很有效的方法;
然后在用sum()进行集合相加的时候,如果sum()的对象没有记录,那么不会返回0,而返回null,这么做,不会影响数据库,因为数值型字段也是可以存放NULL的,因为在执行这样的SQL语句的时候,没有记录也不会报错。
但是执行完之后,要使用这个数据就有问题了。
1、在程序里处理的时候,比如进行四则运算或其他的强类型转换的时候,就会提供类型不正确或是与其它数据相加得到的结果变成NULL,因为NULL+number= Null。
2、统计的结果的SQL语句中有其它的运算,同1的最后一种情况,Null+ number = Null。就会把其它的有效数据也抹杀掉了。
解决方法:
1、使用isnull()方法进行判断,如isnull(sum(cnt),0),其中0为默认值,如果sum(cnt)的结果为null,则赋值0;同理此方法可用于某字段,isnull(cnt,0),这样就可以排除一些值为null的数值型字段了。而如果这样isnull(sum(isnull(cnt,0)),0),这样就可保万无一失了。
如果是oracle,就是NVL,而不是isnull了。
2、使用case when else流程控制语句,如可以用"case when sum(cnt) is null then 0 else sum(cnt) end"来代替sum(cnt),其中0同上一条的意义相同。
另外求平均函数avg() 也是一样的情况,相同的解决办法。
- SQL中sum(),avg()等统计结果为null的解决方法
- SQL中sum(),avg()等统计结果为null的解决方法
- SQL中sum(),avg()等统计结果为null的解决方法
- SQL中sum(),avg()等统计结果为null的解决方法
- SQL中sum(),avg()等统计结果为null的解决方法
- SQL中sum(),avg()等统计结果为null的解决方法
- 数据库 SUM + AVG 等聚合函数 结果为NULL 处理
- SQL中AVG()、COUNT()、SUM()等函数对NULL值处理
- CakePHP在Model中使用SUM/AVG等进行统计
- 关于SQL中使用select sum查询结果为NULL的解决办法
- 在oracle的聚合函数(sum、avg等)中使用group by来分组你的结果
- SQL中count()/max() /min()/sum()avg()/sum()等函数用法
- json_decode结果为null的解决方法
- sql查询 group by 数字类型+null 为null 处理 ,sum()的结果作为条件再次查询。
- sql server 中null值与非null值相加以后所得的结果仍然为null值
- 使用mysql sum统计函数 结果为null时返回值改为0
- 在oracle的聚合函数(sum、avg等)中使用NVL函数,强迫加入空值
- mysql中group by子句和聚合函数MAX(),MIN(),SUM(),AVG()等的使用
- asp.net 制作安装包并自动安装SQL数据库
- vc 字符串的处理函数
- VB.net安装包制作全过程(不包含数据库)
- 图片显示投票两个柱状图
- SQL中sum(),avg()等统计结果为null的解决方法
- SQL中sum(),avg()等统计结果为null的解决方法
- Linux 磁盘与硬件管理
- ListBox和DropDownList遍历控件获取SelectedIndex属性
- getline的使用
- php显示换行
- 自省录
- 成熟
- 用VC++制作播放AVI视频流的动画按钮
- 给大学生的良言