Heim >Datenbank >MySQL-Tutorial >Warum gibt die SUM-Funktion von MySQL „0' statt NULL zurück?

Warum gibt die SUM-Funktion von MySQL „0' statt NULL zurück?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-30 18:43:02718Durchsuche

Why Does MySQL's SUM Function Return '0' Instead of NULL?

Abrufen von „0“ anstelle von NULL mithilfe der SUM-Funktion von MySQL

Bei Verwendung der SUM-Funktion in MySQL zum Berechnen der Summe der Werte in a Spalte gibt die Funktion NULL zurück, wenn keine passenden Werte gefunden werden. Dieses Verhalten kann problematisch sein, wenn Sie möchten, dass die Funktion in solchen Fällen 0 zurückgibt.

Um dieses Problem zu lösen, kann die Funktion COALESCE eingesetzt werden. COALESCE benötigt zwei Argumente: Das erste Argument ist der Ausdruck, den Sie auswerten möchten, und das zweite Argument ist der Wert, der zurückgegeben werden soll, wenn das erste Argument NULL ist.

Im Fall der SUM-Funktion kann die folgende Syntax verwendet werden verwendet werden:

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

In diesem Beispiel wird der SUM(Column_1)-Ausdruck ausgewertet. Wenn keine passenden Werte für Spalte_2 gefunden werden, gibt der Ausdruck NULL zurück. Allerdings gibt die COALESCE-Funktion dann den angegebenen Standardwert 0 statt NULL zurück.

Dieser Ansatz stellt sicher, dass die SUM-Funktion immer einen numerischen Wert zurückgibt, auch wenn keine passenden Werte gefunden werden. Dadurch können Sie potenzielle Probleme vermeiden, die beim Umgang mit NULL-Werten auftreten können.

Zusätzliche Informationen:

Für ein umfassenderes Verständnis der Funktionsweise von COALESCE: Stellen Sie sich das folgende Szenario vor: Es wurden drei Tabellen mit jeweils unterschiedlichen Datentypen erstellt.

  • Tabelle 1:Alle numerischen Werte
  • Tabelle 2: Alle NULL-Werte
  • Tabelle 3:Eine Mischung aus numerischen und NULL-Werten

Das Ausführen der folgenden Abfrage für diese Tabellen demonstriert die Funktionalität von 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>

Die Ergebnisse dieser Abfrage zeigen, dass COALESCE unabhängig vom Datentyp sicherstellt, dass die SUM-Funktion einen numerischen Wert zurückgibt, was eine flexiblere und vorhersehbarere Datenverarbeitung in Ihren MySQL-Anwendungen ermöglicht.

Das obige ist der detaillierte Inhalt vonWarum gibt die SUM-Funktion von MySQL „0' statt NULL zurück?. 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