博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL中sum(),avg()等统计结果为null的解决方法
阅读量:6681 次
发布时间:2019-06-25

本文共 619 字,大约阅读时间需要 2 分钟。

在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),这样就可保万无一失了。

2、使用case when else流程控制语句,如可以用"case when sum(cnt) is null then 0 else sum(cnt) end"来代替sum(cnt),其中0同上一条的意义相同。

转载地址:http://byxao.baihongyu.com/

你可能感兴趣的文章
java 判断String字符串是不是json数据
查看>>
psql: FATAL: role “postgres” does not exist
查看>>
新版剑指offer14 剪绳子
查看>>
Feign 请求拦截器和日志
查看>>
WPF内实现与串口发送数据和接收数据
查看>>
Ideal test 不执行main方法了
查看>>
kbengine_js_plugins
查看>>
ElasticSearch的各种服务的URL
查看>>
工厂模式之数据工厂
查看>>
IBM Java多线程 - 1. 线程基础
查看>>
关系数据库的末日是否已经来临(转载)
查看>>
Myeclipse中导入jar包的方法
查看>>
topcoder srm 715 div1 -23
查看>>
梯度下降(Gradient Descent)小结
查看>>
一起谈.NET技术,使用User Control做HTML生成
查看>>
谷歌启动搜索引擎新功能 网页Flash内容即时预览
查看>>
专访梭子鱼:以“立体交付”保障Web应用安全
查看>>
微软SQL Server 2012新特性Silverlight报表客户端 - Power View
查看>>
记一次网站收录数和排名的实现
查看>>
pthread_cond_wait()用法分析
查看>>