」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 在空資料集上使用 MySQL 的 SUM 函數時如何傳回「0」而不是 NULL?

在空資料集上使用 MySQL 的 SUM 函數時如何傳回「0」而不是 NULL?

發佈於2024-11-08
瀏覽:650

How to Return \'0\' Instead of NULL When Using MySQL\'s SUM Function on Empty Datasets?

當不存在任何值時如何從MySQL 的SUM 函數中檢索“0”

MySQL 中的SUM 函數提供了一種方便的方法來聚合數值價值觀。但是,當查詢期間沒有找到符合的行時,SUM 函數通常會傳回 NULL 值。對於某些用例,可能更需要傳回“0”而不是 NULL。

利用 COALESCE 解決問題

此問題的解決方案在於合併函數。 COALESCE 可讓您指定當第一個參數計算結果為 NULL 時要傳回的預設值。

請考慮以下範例:

SELECT COALESCE(SUM(Column_1),0)
FROM Table
WHERE Column_2 = 'Test'

在此查詢中,COALESCE 環繞 SUM 函數。如果 Column_2 等於「Test」的行的 Column_1 的 SUM 傳回 NULL 值,COALESCE 將提供「0」。

演示和更多信息

訪問 http ://www.sqlfiddle.com/#!2/d1542/3/0 的現場演示解決方案。

要深入研究COALESCE 的細微差別,請考慮以下涉及三個具有不同值分佈的表的場景:

  • 表'foo' 包含NULL 和非值的混合NULL值。
  • 表「bar」僅包含非 NULL 值。
  • 表「baz」僅包含 NULL值。

透過應用以下查詢:

SELECT  'foo'                   as table_name,
        'mixed null/non-null'   as description,
        21                      as expected_sum,
        COALESCE(SUM(val), 0)   as actual_sum
FROM    foo
UNION ALL

SELECT  'bar'                   as table_name,
        'all non-null'          as description,
        21                      as expected_sum,
        COALESCE(SUM(val), 0)   as actual_sum
FROM    bar
UNION ALL

SELECT  'baz'                   as table_name,
        'all null'              as description,
        0                       as expected_sum,
        COALESCE(SUM(val), 0)   as actual_sum
FROM    baz

您將獲得以下內容結果:

21210
TABLE_NAMEDESCRIPTIONEXP ECTED_SUMACTUAL_SUM
foo混合空/非空21混合空/非空
]21全部非空
21baz ]全部為空
0

How to Return \'0\' Instead of NULL When Using MySQL\'s SUM Function on Empty Datasets?

正如您所觀察到的,COALESCE函數有效地為“baz”表返回“0”,其中所有值均為 NULL。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3