欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Mysql使用sum()函數(shù)返回null的問題詳解

 更新時(shí)間:2022年01月29日 10:59:56   作者:IT范兒  
MySQL的Sum()函數(shù)是用來(lái)找出所有記錄的一個(gè)字段的總和,下面這篇文章主要給大家介紹了關(guān)于Mysql使用sum()函數(shù)返回null的問題,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

介紹

SUM()函數(shù)用于計(jì)算一組值或表達(dá)式的總和,SUM()函數(shù)的語(yǔ)法如下:

SUM(DISTINCT expression)

SUM()函數(shù)是如何工作的?

  • 如果在沒有返回匹配行SELECT語(yǔ)句中使用SUM函數(shù),則SUM函數(shù)返回NULL,而不是0。
  • DISTINCT運(yùn)算符允許計(jì)算集合中的不同值。
  • SUM函數(shù)忽略計(jì)算中的NULL值。

問題

在項(xiàng)目中使用 Mysql 中的 sum() 函數(shù)求和時(shí),調(diào)試時(shí)發(fā)現(xiàn)報(bào)出下面的錯(cuò)誤信息:

sql: Scan error on column index 0, name "total": converting NULL to int64 is unsupported

我相應(yīng)執(zhí)行的sql語(yǔ)句如下:

SELECT SUM(consume) as total FROM task_income WHERE consume_type=3 AND uid=20;

驗(yàn)證

為了找到原因,我在 Navicat 中執(zhí)行了一遍出問題的sql和參數(shù),發(fā)現(xiàn)結(jié)果中確實(shí)是返回了 null :

按我之前開發(fā)時(shí)的想法:

  • 如果有相應(yīng)的數(shù)據(jù),返回求和后的值
  • 如果沒有符合條件的數(shù)據(jù),返回 0

結(jié)果,當(dāng)沒有符合條件的數(shù)據(jù)時(shí)卻返回了 null 。

解決

可以通過結(jié)合使用 ISNULL 或 COALESCE 函數(shù)來(lái)解決。

相應(yīng)的示例如下:

SELECT IFNULL(SUM(Column1), 0) AS total FROM...

SELECT COALESCE(SUM(Column1), 0) AS total FROM...

區(qū)別

上面說道,使用 ISNULL 或 COALESCE 函數(shù)都可以解決為 null 的問題,那么這兩個(gè)函數(shù)有什么區(qū)別呢?

  • ISNULL 函數(shù)接受兩個(gè)參數(shù),如果第一個(gè)參數(shù)不是 null 會(huì)直接返回,如果第一個(gè)參數(shù)是 null ,則返回第二個(gè)參數(shù)
  • COALESCE 函數(shù)可以接受兩個(gè)或多個(gè)參數(shù),并返回第一個(gè)非 null 的參數(shù),如果所有參數(shù)都為 null,則會(huì)返回 null

參考

總結(jié)

到此這篇關(guān)于Mysql使用sum()函數(shù)返回null問題的文章就介紹到這了,更多相關(guān)Mysql用sum()返回null內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論