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

Barbara Streisand
發布: 2024-11-03 03:34:30
原創
467 人瀏覽過

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
登入後複製

您將獲得以下結果:

TABLE_NAME DESCRIPTION EXPECTED_SUM ACTUAL_SUM
foo mixed null/non-null 21 21
bar all non-null 21 21
baz all null 0 0

As您可以觀察到,COALESCE 函數有效地為「 baz”表傳回“0”,其中所有值均為NULL。

以上是在空資料集上使用 MySQL 的 SUM 函數時如何傳回「0」而不是 NULL?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板