使用MySQL 的SUM 函數檢索'0' 而不是NULL
當使用MySQL 中的SUM 函數計算a 中值的總和時列,如果未找到匹配值,則函數傳回NULL。如果您希望函數在這種情況下傳回 0,這種行為可能會出現問題。
要解決此問題,可以使用 COALESCE 函數。 COALESCE 接受兩個參數:第一個參數是您想要計算的表達式,第二個參數是您想要在第一個參數為 NULL 時傳回的值。
對於 SUM 函數,以下語法可以使用:
<code class="sql">SELECT COALESCE(SUM(Column_1), 0) FROM Table WHERE Column_2 = 'Test'</code>
在此範例中,將計算 SUM(Column_1) 表達式。如果未找到 Column_2 的符合值,則表達式將傳回 NULL。但是,COALESCE 函數將傳回指定的預設值 0,而不是 NULL。
此方法可確保 SUM 函數始終傳回數值,即使找不到符合值也是如此。因此,您可以避免處理 NULL 值時可能出現的潛在問題。
其他資訊:
為了更全面地了解 COALESCE 的工作原理,考慮以下場景:已建立三個表,每個表具有不同的資料類型。
對這些表運行以下查詢演示了COALESCE 的功能:
<code class="sql">SELECT table_name, description, expected_sum, COALESCE(SUM(val), 0) AS actual_sum FROM ( SELECT 'foo' AS table_name, 'mixed null/non-null' AS description, 21 AS expected_sum, val FROM Table1 UNION ALL SELECT 'bar' AS table_name, 'all non-null' AS description, 21 AS expected_sum, val FROM Table2 UNION ALL SELECT 'baz' AS table_name, 'all null' AS description, 0 AS expected_sum, val FROM Table3 ) AS subquery GROUP BY table_name, description, expected_sum ORDER BY table_name, description;</code>
此查詢的結果表明,無論數據類型如何, COALESCE 都能確保SUM 函數傳回數值,從而在MySQL 應用程式中實現更靈活且可預測的資料處理。
以上是為什麼 MySQL 的 SUM 函數會回傳「0」而不是 NULL?的詳細內容。更多資訊請關注PHP中文網其他相關文章!