关闭

遇到的问题----sql语句中用sum()函数输出为null

标签: sql
3078人阅读 评论(0) 收藏 举报
分类:

在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同上一条的意义相同。

另外求平均函数avg() 也是一样的情况,相同的解决办法


用isnull函数解决:isnull(sum(刷卡金额),0)

1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

关于SQL语句中SUM函数返回NULL的解决办法

SUM 是SQL语句中的标准求和函数,如果没有符合条件的记录,那么SUM函数会返回NULL。 但多数情况下,我们希望如果没有符合条件记录的情况下,我们希望它返回0,而不是NULL,那么我们可以使用例...
  • wozengcong
  • wozengcong
  • 2015-05-28 12:56
  • 6642

解决数据库查询时Null的问题(如SUM函数)

#SUM(expr)函数如果表达式没有数据,那么返回的结果就会为空,下面介绍四种方法解决NUll问题: #第一种: 采用 IFNULL(expr1,expr2)函数,当expr1为NULL时,则数...
  • qq844579582
  • qq844579582
  • 2016-09-21 17:26
  • 4219

使用Linq求和方法Sum计算集合中多个元素和时应该注意的性能问题

提出问题 本文使用下面的实例来说明问题,以下是实例的完整代码。 //************************************************************ /...
  • tiana0
  • tiana0
  • 2014-09-10 22:40
  • 9359

[转帖]MySQL的sum函数返回的类型

原帖地址: http://bylijinnan.iteye.com/blog/1984472?utm_source=tuicool 摘要 :  The SUM() and AVG() fu...
  • ranweizheng
  • ranweizheng
  • 2015-05-18 18:14
  • 5330

mysql行转列(综合利用if + sum)---为解决OSC的一个朋友的问题

mysql用sum+if 完成行转列(行表数据如下) 首先思考如何创建出列结构 [sql] view plaincopy SELECT...
  • jayxujia123
  • jayxujia123
  • 2014-03-21 19:06
  • 7024

【SQL 编程你也行】SQL Server新功能之函数:sum函数(2005、2008、2012、2014)

sum函数在SQL Server 2005中,添加了 over(partition by )的功能。 在2012、1014中添加了 over(partition by  order by )的功能,...
  • yupeigu
  • yupeigu
  • 2016-01-14 16:02
  • 1634

MYSQL 中SUM函数和关联查询

写在前面:昨晚迷迷糊糊的,做积分求和时候,被困住了,本来的需求是有两张表user用户表和credit用户积分表,要统计出用户的总积分并按照积分和递减排序,其中的字段写在下面: user表中 id...
  • LLopensorce
  • LLopensorce
  • 2016-12-17 11:29
  • 2328

CASE WHEN 及 SELECT CASE WHEN的用法、SUM函数中的数字参数(转)

Case具有两种格式。简单Case函数和Case搜索函数。 简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女'...
  • hero_lxz
  • hero_lxz
  • 2017-06-01 14:33
  • 1064

Python 中求和函数 sum 用法

Python 中求和函数 sum 用法今天在看《集体编程智慧》这本书的时候,看到一段Python代码,当时是百思不得其解,总觉得是书中排版出错了,后来去了解了一下sum的用法,看了一些Python大神...
  • xiaoyu90520
  • xiaoyu90520
  • 2017-03-25 21:47
  • 13321

SqlServer_select-多次sum查询结果合并;

转自  http://blog.csdn.net/cyb_23/article/details/22472669 没事就瞎看看。如果一对多的关系,可以另外的表查询出来的数据作为一个字段。是平时想的...
  • liuqiaoying_lqy
  • liuqiaoying_lqy
  • 2016-06-24 10:45
  • 3358
    个人资料
    • 访问:2143903次
    • 积分:24855
    • 等级:
    • 排名:第298名
    • 原创:605篇
    • 转载:63篇
    • 译文:0篇
    • 评论:320条
    博客专栏
    最新评论