首頁 >資料庫 >mysql教程 >如何防止 MySQL SUM 函數傳回 NULL?

如何防止 MySQL SUM 函數傳回 NULL?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-31 07:22:30230瀏覽

How to Prevent MySQL SUM Function from Returning NULL?

如何在MySQL SUM 函數中處理NULL 值

在MySQL 中,SUM 函數在找不到值時通常會傳回NULL,這可以不方便。本文將探討如何使用 COALESCE 函數來確保 SUM 在未找到任何值時始終傳回「0」。

問題:

考慮如下查詢:

<code class="sql">SELECT SUM(Column_1)
FROM Table
WHERE Column_2 = 'Test'</code>

如果 Column_2 中沒有符合條件的條目,則函數會傳回 NULL。但是,我們可能更希望它回傳“0”。

解:使用 COALESCE

要解決此問題,請使用 COALESCE 函數。 COALESCE 將多個值作為參數並傳回第一個非 NULL 值。透過將其與 SUM 函數一起使用,我們可以確保遇到 NULL 時結果始終為「0」。

<code class="sql">SELECT COALESCE(SUM(column),0)
FROM   table
WHERE  ...</code>

範例:

讓我們使用用於示範COALESCE 函數的SQL 小提琴:http://www.sqlfiddle.com/#!2/d1542 /3/0

其他資訊:

COALESCE函數也可以與其他函數一起使用來處理NULL 值。以下是使用三個具有不同值的表的示例:

MySQL 5.5.32 架構設置:

<code class="sql">CREATE TABLE foo (
  id    INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  val   INT
);

INSERT INTO foo (val) VALUES
(null), (1), (null), (2), (null), (3), (null), (4), (null), (5), (null), (6), (null);

CREATE TABLE bar (
  id    INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  val   INT
);

INSERT INTO bar (val) VALUES
(1), (2), (3), (4), (5), (6);

CREATE TABLE baz (
  id    INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  val   INT
);

INSERT INTO baz (val) VALUES
(null), (null), (null), (null), (null), (null);</code>

查詢:

<code class="sql">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</code>

結果:

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

以上是如何防止 MySQL SUM 函數傳回 NULL?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn