MySQL中的sum函式遇到null的坑點

2021-10-04 06:50:09 字數 1084 閱讀 1359

3、字段值為null時,sum的值

4、對非計數型別使用sum函式

5、結論

專案中的sql指令碼中遇到了

select ifnull(

sum(欄位名),0

)from table_name

該型別的寫法,目的很明確,就是為了在sum值為null,也能夠返回數字0;那問題就來了,

什麼情況下sum的值會為null?

如果累加的欄位名為出現null值時,sum會返回什麼呢?

如果非計數型別的字段進行累加時(比如varchar),會出現什麼情況呢?

2.1 官方文件

當然先查查一下官方文件(5.7版本),描述如下:

官方文件明確說明了,當結果集中沒有資料時,那sum的值為則返回null;

這是官方說法,我們當然也可以自己驗證一下;

2.2 本地演示

本地演示資料

3.1 本地演示

表結構和表資料如上所示

4.1 本地演示
表結構和表資料如上所示

結果集為空時,則sum結果為null

累加字段出現null時,不參與累加計算

對非計數字段使用sum,返回0而非null

思考:使用sum函式時,會出現返回null的情況,所以我們可以使用ifnull函式或者coalesce函式進行包裹,確保返回的數值型別(如前言所示);但是這裡我們不需要對sum中的字段再次進行ifnull的判斷,可以認為,sum函式已經很好的處理了統計欄位為null的情況,即

select ifnull(

sum(ifnull(欄位名),0

),0)

from table_name

這樣是完全沒必要的。

mysql的SUM函式結果

新專案在設計資料庫欄位時將部分儲存數字的字段設計成字串格式,開發環境和測試環境都沒有出問題,但在發布到生產環境上時出現格式轉換錯誤。查詢日誌發現是字串格式的數字進行加運算時出現的格式轉換錯誤 integer.valueof,測試發現是資料查詢的結果存在0.0資料,懷疑是對該字段執行的sum操作導致。...

Mysql中的sum函式為null時的解決辦法

在mysql中sum函式查出的最終結果為0的時候會顯示null,這時候就需要將null轉為0 方法1 使用ifnull expr1,expr2 函式 select ifnull sum ss 0.0 as sum from fd order fo2 where fo2.buyer id 11 結果為...

python中的sum函式 sum axis 1

看起來挺簡單的樣子,但是在給sum函式中加入引數。sum a,axis 0 或者是.sum axis 1 就有點不解了 在我實驗以後發現 我們平時用的sum應該是預設的axis 0 就是普通的相加 而當加入axis 1以後就是將乙個矩陣的每一行向量相加 例如 import numpy as np n...