本篇内容介绍了“Mysql中使用sum()函数返回null报错怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
介绍
SUM()函数用于计算一组值或表达式的总和,SUM()函数的语法如下:
SUM(DISTINCT expression)
SUM()函数是如何工作的?
如果在没有返回匹配行SELECT语句中使用SUM函数,则SUM函数返回NULL,而不是0。
DISTINCT运算符允许计算集合中的不同值。
SUM函数忽略计算中的NULL值。
问题
在项目中使用 Mysql 中的 sum() 函数求和时,调试时发现报出下面的错误信息:
sql: Scan error on column index 0, name "total": converting NULL to int64 is unsupported
我相应执行的sql语句如下:
SELECT SUM(consume) as total FROM task_income WHERE consume_type=3 AND uid=20;
验证
为了找到原因,我在 Navicat 中执行了一遍出问题的sql和参数,发现结果中确实是返回了 null :
按我之前开发时的想法:
如果有相应的数据,返回求和后的值
如果没有符合条件的数据,返回 0
结果,当没有符合条件的数据时却返回了 null 。
解决
可以通过结合使用 ISNULL 或 COALESCE 函数来解决。
相应的示例如下:
SELECT IFNULL(SUM(Column1), 0) AS total FROM...SELECT COALESCE(SUM(Column1), 0) AS total FROM...
区别
上面说道,使用 ISNULL 或 COALESCE 函数都可以解决为 null 的问题,那么这两个函数有什么区别呢?
ISNULL 函数接受两个参数,如果第一个参数不是 null 会直接返回,如果第一个参数是 null ,则返回第二个参数
COALESCE 函数可以接受两个或多个参数,并返回第一个非 null 的参数,如果所有参数都为 null,则会返回 null
“Mysql中使用sum()函数返回null报错怎么解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!