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.