„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > 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?

Veröffentlicht am 05.11.2024
Durchsuche:561

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 werden soll, 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 Werteverteilungen:

  • 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_NAMEDESCRIPTIONEXPECTED_SUMACTUAL_SUM
foogemischt null/nicht null2121
baralle ungleich Null2121
baz all null00

Wie Sie sehen können, gibt die COALESCE-Funktion effizient „0“ für „ baz'-Tabelle, in der alle Werte NULL sind.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3