Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie kann verhindert werden, dass die MySQL-SUM-Funktion NULL zurückgibt?

Mary-Kate Olsen
Freigeben: 2024-10-31 07:22:30
Original
225 Leute haben es durchsucht

How to Prevent MySQL SUM Function from Returning NULL?

So behandeln Sie NULL-Werte in der MySQL-SUM-Funktion

In MySQL geben SUM-Funktionen oft NULL zurück, wenn keine Werte gefunden werden, was passieren kann unbequem sein. In diesem Artikel erfahren Sie, wie Sie mit der COALESCE-Funktion sicherstellen, dass SUM immer „0“ zurückgibt, wenn keine Werte gefunden werden.

Problem:

Stellen Sie sich eine Abfrage wie die folgende vor:

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

Wenn in Spalte_2 keine Einträge vorhanden sind, die die Kriterien erfüllen, gibt die Funktion NULL zurück. Möglicherweise bevorzugen wir jedoch stattdessen die Rückgabe von „0“.

Lösung: Verwendung von COALESCE

Um dieses Problem zu beheben, verwenden Sie die Funktion COALESCE. COALESCE akzeptiert mehrere Werte als Argumente und gibt den ersten Nicht-NULL-Wert zurück. Indem wir es zusammen mit der SUMME-Funktion verwenden, können wir sicherstellen, dass das Ergebnis immer „0“ ist, wenn NULL angetroffen wird.

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

Beispiel:

Verwenden wir a SQL-Geige zur Demonstration der COALESCE-Funktion: http://www.sqlfiddle.com/#!2/d1542/3/0

Zusätzliche Informationen:

Die COALESCE Die Funktion kann auch mit anderen Funktionen verwendet werden, um NULL-Werte zu verarbeiten. Hier ist ein Beispiel mit drei Tabellen mit unterschiedlichen Werten:

MySQL 5.5.32-Schema-Setup:

<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>
Nach dem Login kopieren

Abfrage:

<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>
Nach dem Login kopieren

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

Das obige ist der detaillierte Inhalt vonWie kann verhindert werden, dass die MySQL-SUM-Funktion NULL zurückgibt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage