Die Funktion SQL COALESCE() wird genutzt, um den ersten Wert innerhalb einer Liste zu bestimmen, der nicht NULL ist. Damit ist die Funktion eine verkürzte Version einer ent­spre­chen­den CASE-Anweisung.

Was ist SQL COALESCE()?

Das Schlüs­sel­wort NULL steht in SQL für Daten, die selbst keinen Wert haben. Ein solcher Fall tritt zum Beispiel ein, wenn Sie in einer Tabelle einen be­stimm­ten Wert (noch) nicht kennen und daher das ent­spre­chen­de Feld nicht ausfüllen. Dies bedeutet nicht zwangs­läu­fig, dass das ent­spre­chen­de Feld keinen Wert hat, sondern unter Umständen einfach, dass Sie diesen Wert nicht wissen. Diese NULL-Werte sind zwar auf den ersten Blick nicht schädlich, sammeln Sie sich al­ler­dings in einer Datenbank an, kann es un­über­sicht­lich werden. Die Funktion SQL COALESCE() wird dafür verwendet, den ersten Wert in einer Liste aus­zu­ge­ben, der nicht NULL ist.

vServer / VPS
VPS un­schlag­bar günstig auf Dell En­ter­pri­se Servern
  • 1 Gbit/s, un­be­grenzt Traffic & mehr Cores
  • Min­des­tens 99,99% Ver­füg­bar­keit & ISO-zer­ti­fi­zier­te Re­chen­zen­tren
  • Aus­ge­zeich­ne­ter 24/7 Premium-Support mit per­sön­li­chem Berater

Syntax und Vor­aus­set­zun­gen

Die Syntax von SQL COALESCE() ist ganz einfach. Sie sieht aus wie folgt:

COALESCE(wert1, wert2, …, n)
sql

Dabei benötigen Sie min­des­tens zwei Argumente. Haben alle Argumente den Wert NULL, wird auch NULL am Ende aus­ge­ge­ben.

Die Funk­ti­ons­wei­se anhand eines Beispiels

Die grund­sätz­li­che Funk­ti­ons­wei­se können Sie schnell anhand eines einfachen Beispiels erkennen. Im folgenden Code geben wir ver­schie­de­ne Argumente ein und lassen Sie mit Hilfe des SQL-Befehls SELECT über­prü­fen.

SELECT COALESCE(NULL, NULL, NULL, 17, 49, NULL, 13, 15, 14, 15);
sql

Die Ausgabe lautet in diesem Fall „17“, da dies der erste Wert ist, der nicht NULL ist.

Die Funktion in Kom­bi­na­ti­on

Deutlich hilf­rei­cher ist die Funktion, wenn Sie sie in Kom­bi­na­ti­on mit anderen Aktionen ausführen. Dafür stellen wir uns eine Tabelle namens „Mit­ar­bei­ter“ vor. Diese enthält die Spalten „Name“, „Wohnort“ und „Ge­burts­tag“. Sie sieht so aus:

Name Wohnort Ge­burts­tag
Peter Müller Dortmund 10.04.1967
Sabine Schulz Dortmund 27.07.1989
Sebastian Schmidt Bochum
Martin Becker Dortmund 14.04.2001
Sarah Schmitz 02.12.2005

Zwei der Einträge sind hier nicht hin­ter­legt. Zwar hat Sebastian Schmidt ein Ge­burts­da­tum und Sarah Schmitz einen Wohnort, diese sind uns zu diesem Zeitpunkt aber nicht bekannt. Möchten wir das kenntlich machen, hilft die Funktion SQL COALESCE(). Dies ist der passende Code:

SELECT Name,
COALESCE(Wohnort, 'BITTE ERFRAGEN') AS Wohnort,
COALESCE(Geburtstag, 'BITTE ERFRAGEN') AS Geburtstag
FROM Mitarbeiter;
sql

Die ent­spre­chen­de Ausgabe sieht nun so aus:

Name Wohnort Ge­burts­tag
Peter Müller Dortmund 10.04.1967
Sabine Schulz Dortmund 27.07.1989
Sebastian Schmidt Bochum BITTE ERFRAGEN
Martin Becker Dortmund 14.04.2001
Sarah Schmitz BITTE ERFRAGEN 02.12.2005

Ähnliche Funk­tio­nen wie SQL COALESCE()

SQL COALESCE() weist Über­schnei­dun­gen mit einer CASE-Anweisung auf und ist lediglich eine verkürzte Version dieser Ab­fra­ge­op­ti­on. Der CASE-Code würde so aussehen:

CASE
WHEN wert1 IS NOT NULL THEN wert1
WHEN wert2 IS NOT NULL THEN wert2
WHEN … IS NOT NULL THEN …
ELSE n
END
sql

Auch die ISNULL-Funktion ähnelt SQL COALESCE(). Im Gegensatz zur hier be­han­del­ten Funktion wird ISNULL al­ler­dings nur einmal aus­ge­wer­tet und folgt auch nicht den Regeln von CASE.

Tipp

Ein Server nach Ihren Vor­stel­lun­gen: Mit SQL-Server-Hosting von IONOS nutzen Sie MSSQL, MySQL oder MariaDB und pro­fi­tie­ren von per­sön­li­cher Beratung, starken Si­cher­heits­me­cha­nis­men und einer her­aus­ra­gen­den Per­for­mance.

Zum Hauptmenü