Maybaygiare.org

Blog Network

Verwendung von COALESCE in PostgreSQL

ZUSAMMENFASSUNG: In diesem Artikel werden Methoden zum Behandeln von Nullwerten in PostgreSQL mithilfe der COALESCE-Funktion beschrieben. Anhand von Beispielen werden folgende Themen behandelt:

1. Was ist eine COALESCE-Funktion?

a. Einige Vorbehalte

2. Verhindern von Nullwerten mit COALESCE

In diesem Beitrag werden wir verstehen, was die COALESCE-Funktion ist und wie sie in PostgreSQL verwendet wird.

Was ist eine COALESCE-Funktion?

COALESCE ist eine integrierte Systemfunktion, die als einer der in PostgreSQL verfügbaren Bedingungsausdrücke angesehen werden kann. NULLIF, GREATEST, LEAST und COALESCE sind die Arten von bedingten Ausdrücken in PostgreSQL.

Die Funktion COALESCE gibt den ersten Nicht-NULL-Ausdruck in der angegebenen Liste zurück. Wenn alle Argumente NULL sind, gibt es NULL als Ausgabe zurück.

Die unterstützte Syntax ist:

COALESCE(value_1,value_2,value_3,........value_n)

Die Parameter oder Argumente sind:

value_1,value_2,value_3,........value_n

Vorbehalte

Ein paar Punkte zur COALESCE-Funktion:

  • Die Parameter werden auf Nicht-NULL-Werte getestet.
  • Die Parameter sollten alle den gleichen Datentyp haben. Andernfalls wird es zu einem Fehler führen.
  • Die COALESCE-Funktion akzeptiert eine unbegrenzte Anzahl von Argumenten.
  • Es nimmt die Argumente von links nach rechts.
  • Coalesce-Funktionen bieten ähnliche Kompatibilität wie NVL und IFNULL, die in anderen DBMS verfügbar sind.
  • CASE und COALESCE können für ähnliche Zwecke verwendet werden, aber der Vorteil der Verwendung von COALESCE besteht darin, dass weit weniger Eingabe erforderlich ist.
  • Die Auswertung der Parameter wird beendet, sobald der erste Wert ungleich NULL erreicht ist.

Beispiele

1. So funktioniert COALESCE mit einem Nicht-NULL-Wert für den ersten Parameter:

postgres=# select coalesce (1,null,2); coalesce ---------- 1(1 row)

Die COALESCE-Funktion findet den ersten Nicht-NULL-Ausdruck am Anfang, so dass sie immer das gleiche Ergebnis liefert, unabhängig davon, was die verbleibenden Parameter enthalten.

2. So funktioniert COALESCE, wenn ein Nullwert der erste Parameter ist:

postgres=# select coalesce (null,1,2); coalesce ---------- 1(1 row)

Die COALESCE-Funktion hat im ersten Parameter einen Nullwert gefunden und fuhr mit dem zweiten Parameter fort, der nicht NULL war, sodass der Wert dieses Parameters zurückgegeben wurde.

3. So werden mehrere NULL-Werte interpretiert:

postgres=# SELECT coalesce(null,null, 1, 2, 3, null, 4); coalesce ---------- 1(1 row)

Dieser Ausdruck enthält mehrere NULL-Werte, aber da der erste Nicht-NULL-Wert für den dritten Parameter erreicht wurde, wurden alle verbleibenden Werte ignoriert.

4. Wenn die Datentypen der Parameter nicht übereinstimmen, wird ein Fehler ausgegeben:

postgres=# SELECT coalesce(1,now(),null);ERROR: COALESCE types integer and timestamp with time zone cannot be matched

Der erste Parameter ist eine Ganzzahl, und die Funktion now() gibt einen Zeitstempel mit Zeitzone zurück. Da diese Parameter nicht vom selben Typ sind, ist die Signatur der Funktion ungültig und erzeugt daher einen Fehler.

5. Sie können andere Funktionen als Parameter innerhalb der COALESCE-Funktion verwenden:

postgres=# SELECT coalesce(nvl(null,199),least(8,null),avg(9.9)); coalesce ---------- 199(1 row)

Verhindern von Nullwerten mit COALESCE

Eine hilfreiche Anwendung der COALESCE-Funktion besteht darin, zu verhindern, dass Nullwerte in Abfrageergebnissen angezeigt werden.

Beispiel

1. Erstellen Sie eine Tabelle „sales“ mit dem Befehl CREATE TABLE:

postgres=# CREATE TABLE sales (serial_id int primary key, product_name varchar(50), amount numeric, discount numeric); CREATE TABLE

2. Daten in Tabelle „sales“ einfügen:

postgres=# INSERT INTO sales VALUES (121,'paste',1000,10), (144,'brush',1500,20), (166,'soap',800,0), (178,'coffee',500,NULL);INSERT 0 4

3. Wenn wir versuchen, einen Wert in der Spalte „Rabatt“ von einem Wert in der Spalte „Betrag“ zu subtrahieren, gibt die letzte Zeile einen Nullwert zurück. Dies liegt daran, dass jede Arithmetik, die für einen Nullwert ausgeführt wird, zu NULL führt.

postgres=# SELECT amount - discount as "final bill" FROM sales; final bill ------------ 990 1480 800 <=Null(4 rows)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.