SQL COALESCE ist eine Funktion, die aus einer Liste von Ausdrücken den ersten Nicht-NULL-Wert zurückgibt. Sie ist der Standard-Weg, um fehlende Werte durch sinnvolle Ersatzwerte zu ersetzen und NULL-Propagation in Berechnungen zu stoppen.
Syntax und Verhalten
COALESCE(ausdruck1, ausdruck2, ..., ausdruckN)
COALESCE nimmt mindestens zwei Argumente und wertet sie von links nach rechts aus: Das erste Argument, das nicht NULL ist, gewinnt. Sind alle Argumente NULL, ist das Ergebnis NULL. COALESCE gehört zum ANSI-SQL-Standard und funktioniert in MySQL, MariaDB, PostgreSQL, SQL Server, Oracle und SQLite gleich.
SELECT name, COALESCE(telefon, 'keine Nummer') FROM kunden;
Typische Anwendungen
- Standardwerte in Berichten:
COALESCE(rabatt, 0)zeigt 0 statt leerer Felder. - NULL bei Aggregaten abfangen:
COALESCE(SUM(betrag), 0)– denn SUM über NULL liefert NULL. - Erste vorhandene Spalte wählen:
COALESCE(mobil, festnetz, 'unbekannt'). - Berechnungen schützen:
menge * COALESCE(einzelpreis, 1)verhindert, dass NULL das Ergebnis „ansteckt“.
Abgrenzung zu IFNULL, NVL und ISNULL
Viele Datenbanken haben kürzere Spezialformen für genau zwei Argumente:
- IFNULL(a, b) – MySQL und MariaDB.
- NVL(a, b) – Oracle.
- ISNULL(a, b) – SQL Server (in T-SQL; nicht zu verwechseln mit dem gleichnamigen Prädikat in MySQL).
COALESCE ist flexibler, weil es beliebig viele Argumente akzeptiert. Intern entspricht COALESCE(a, b) dem bedingten Ausdruck CASE WHEN a IS NOT NULL THEN a ELSE b END – mehr dazu im Artikel SQL CASE.
Grundlagen zu Tabellen und Schlüsseln: Primär- und Fremdschlüssel; eine Übersicht der wichtigsten SQL-Statements gibt SQL-Grundlagen.