Heim  >  Artikel  >  Datenbank  >  Wie kann ich „0“ anstelle von NULL zurückgeben, wenn ich die SUM-Funktion von MySQL für leere Datensätze verwende?

Wie kann ich „0“ anstelle von NULL zurückgeben, wenn ich die SUM-Funktion von MySQL für leere Datensätze verwende?

Barbara Streisand
Barbara StreisandOriginal
2024-11-03 03:34:30467Durchsuche

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

So rufen Sie „0“ aus der SUM-Funktion von MySQL ab, wenn keine Werte vorhanden sind

Die SUM-Funktion in MySQL bietet eine praktische Möglichkeit, numerische Werte zu aggregieren Werte. Wenn jedoch während der Abfrage keine übereinstimmenden Zeilen gefunden werden, gibt die SUM-Funktion normalerweise einen NULL-Wert zurück. Für einige Anwendungsfälle kann es wünschenswerter sein, „0“ anstelle von NULL zurückzugeben.

Verwendung von COALESCE zur Lösung des Problems

Die Lösung für dieses Problem liegt in die COALESCE-Funktion. Mit COALESCE können Sie einen Standardwert angeben, der zurückgegeben wird, wenn das erste Argument NULL ergibt.

Betrachten Sie das folgende Beispiel:

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

In dieser Abfrage umschließt COALESCE die SUM-Funktion. Wenn die SUMME von Spalte_1 für Zeilen, in denen Spalte_2 gleich „Test“ ist, einen NULL-Wert zurückgibt, liefert COALESCE stattdessen „0“.

Demonstration und weitere Informationen

Besuchen Sie http ://www.sqlfiddle.com/#!2/d1542/3/0 für eine Live-Demonstration der Lösung.

Um tiefer in die Nuancen von COALESCE einzutauchen, betrachten Sie das folgende Szenario mit drei Tabellen mit unterschiedlichen Wertverteilungen:

  • Tabelle „foo“ enthält eine Mischung aus NULL- und Nicht-NULL-Werten.
  • Tabelle „bar“ enthält ausschließlich Nicht-NULL-Werte.
  • Tabelle 'baz' enthält ausschließlich NULL-Werte.

Durch Anwenden der folgenden Abfrage:

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

Sie erhalten die folgenden Ergebnisse:

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 Sie können beobachten, dass die COALESCE-Funktion effizient „0“ für die „baz“-Tabelle zurückgibt, in der alle Werte NULL sind.

Das obige ist der detaillierte Inhalt vonWie kann ich „0“ anstelle von NULL zurückgeben, wenn ich die SUM-Funktion von MySQL für leere Datensätze verwende?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn