In PostgreSQL gibt die Funktion COALESCE das erste Nicht-Null-Argument zurück. Sie wird im Allgemeinen mit der SELECT-Anweisung verwendet, um Nullwerte effektiv zu behandeln.
Syntax: COALESCE (argument_1, argument_2, …);
Die COALESCE-Funktion akzeptiert eine unbegrenzte Anzahl von Argumenten. Sie gibt das erste Argument zurück, das nicht null ist. Wenn alle Argumente null sind, gibt die Funktion COALESCE null zurück. ie Funktion COALESCE wertet die Argumente von links nach rechts aus, bis sie das erste Argument findet, das nicht null ist. Alle verbleibenden Argumente ab dem ersten Nicht-Null-Argument werden nicht ausgewertet.
Beispiel:
Zur Veranschaulichung erstellen wir zunächst eine Tabelle (sagen wir items
) mit der folgenden Anweisung:
CREATE TABLE items ( ID serial PRIMARY KEY, product VARCHAR (100) NOT NULL, price NUMERIC NOT NULL, discount NUMERIC);
Es gibt vier Felder in der items
Tabelle:
- id: der Primärschlüssel, der das Element in der Tabelle items identifiziert.
- Produkt: der Produktname.
- Preis: der Preis des Produkts.
- Rabatt: der Rabatt für das Produkt.
Nun fügen wir einige Datensätze in die items
Tabelle ein, indem wir die INSERT-Anweisung wie folgt verwenden:
INSERT INTO items (product, price, discount)VALUES ('A', 1000, 10), ('B', 1500, 20), ('C', 800, 5), ('D', 500, NULL);
Schließlich fragen wir die Nettopreise der Produkte wie folgt ab:
SELECT product, (price - discount) AS net_priceFROM items;
Das führt zu folgendem Ergebnis:
Wenn Sie sich die vierte Zeile ansehen, werden Sie feststellen, dass der Nettopreis des Produkts D null ist, was nicht korrekt zu sein scheint. Das Problem ist, dass der Rabatt für das Produkt D Null ist. Wenn wir also den Nullwert nehmen, um den Nettopreis zu berechnen, gibt PostgreSQL Null zurück. Um den richtigen Preis zu erhalten, müssen wir davon ausgehen, dass der Rabatt null ist, wenn er null ist. Dann können wir die Funktion COALESCE wie folgt verwenden:
SELECT product, (price - COALESCE(discount, 0)) AS net_priceFROM items;
Ausgabe: