SQL COALESCE(): So bestimmen Sie Werte, die nicht NULL sind

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 entsprechenden CASE-Anweisung.

Was ist SQL COALESCE()?

Das Schlüsselwort 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 bestimmten Wert (noch) nicht kennen und daher das entsprechende Feld nicht ausfüllen. Dies bedeutet nicht zwangsläufig, dass das entsprechende 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 allerdings in einer Datenbank an, kann es unübersichtlich werden. Die Funktion SQL COALESCE() wird dafür verwendet, den ersten Wert in einer Liste auszugeben, der nicht NULL ist.

vServer (VPS) von IONOS

Günstige und starke VPS für Webserver, Mailserver und eigene Anwendungen mit persönlichem Berater und 24/7 Support!

100 % SSD-Speicher
Bereit in 55 Sek.
SSL Zertifikat

Syntax und Voraussetzungen

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

COALESCE(wert1, wert2, …, n)
sql

Dabei benötigen Sie mindestens zwei Argumente. Haben alle Argumente den Wert NULL, wird auch NULL am Ende ausgegeben.

Die Funktionsweise anhand eines Beispiels

Die grundsätzliche Funktionsweise können Sie schnell anhand eines einfachen Beispiels erkennen. Im folgenden Code geben wir verschiedene Argumente ein und lassen Sie mit Hilfe des SQL-Befehls SELECT überprü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 Kombination

Deutlich hilfreicher ist die Funktion, wenn Sie sie in Kombination mit anderen Aktionen ausführen. Dafür stellen wir uns eine Tabelle namens „Mitarbeiter“ vor. Diese enthält die Spalten „Name“, „Wohnort“ und „Geburtstag“. Sie sieht so aus:

Name Wohnort Geburtstag
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 hinterlegt. Zwar hat Sebastian Schmidt ein Geburtsdatum 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 entsprechende Ausgabe sieht nun so aus:

Name Wohnort Geburtstag
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 Funktionen wie SQL COALESCE()

SQL COALESCE() weist Überschneidungen mit einer CASE-Anweisung auf und ist lediglich eine verkürzte Version dieser Abfrageoption. 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 behandelten Funktion wird ISNULL allerdings nur einmal ausgewertet und folgt auch nicht den Regeln von CASE.

Tipp

Ein Server nach Ihren Vorstellungen: Mit SQL-Server-Hosting von IONOS nutzen Sie MSSQL, MySQL oder MariaDB und profitieren von persönlicher Beratung, starken Sicherheitsmechanismen und einer herausragenden Performance.