0Pricing
Coding Interview Prep · Lektion

COALESCE, NULLIF und ISNULL

Standardwerte einsetzen und den Unterschied zwischen COALESCE und herstellerspezifischen Funktionen verstehen

COALESCE, NULLIF und ISNULL ist eine kostenlose Coding Interview Prep-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Coding Interview Prep-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Coding Interview Prep-Kurs umfasst insgesamt 4 Lektionen.

NULL-Werte ersetzen

Nachdem Sie NULL erkennen können, besteht die nächste wichtige Fähigkeit im Vorstellungsgespräch darin, NULL durch einen sinnvollen Standardwert zu ersetzen. Das portable, standardisierte Werkzeug dafür ist COALESCE.

Daneben lernen Sie NULLIF kennen, das in die entgegengesetzte Richtung arbeitet, indem es einen bestimmten Wert in NULL umwandelt. Außerdem sehen Sie die herstellerspezifischen Funktionen ISNULL (SQL Server) und IFNULL (MySQL), die Bewerber häufig mit COALESCE verwechseln.

Genau zu wissen, worin sie sich unterscheiden, insbesondere bei der Anzahl der Argumente und beim Rückgabetyp, ist eine häufige Frage im Auswahlgespräch.

COALESCE-Grundlagen

COALESCE akzeptiert beliebig viele Argumente und gibt den ersten Nicht-NULL-Wert zurück, wobei die Argumente von links nach rechts geprüft werden. Wenn alle Argumente NULL sind, gibt die Funktion NULL zurück.

COALESCE ist ANSI-standardisiert und funktioniert mit jeder gängigen Datenbank. Deshalb sollte es Ihre Standardantwort sein. Verwenden Sie es, um Ersatzwerte für die Anzeige, Berechnungen oder Gruppierungen bereitzustellen.

-- Show 0 instead of NULL for missing bonuses
SELECT name, COALESCE(bonus, 0) AS bonus
FROM employees;

-- Multiple fallbacks, first non-NULL wins
SELECT COALESCE(mobile_phone, home_phone, 'no phone') AS contact
FROM customers;

COALESCE arbeitet mit Kurzschlussauswertung

Ein Detail, das Interviewer gerne prüfen: COALESCE wertet die Argumente konzeptionell von links nach rechts aus und stoppt beim ersten Nicht-NULL-Wert. Ein späterer, aufwendiger Ausdruck wird also nicht benötigt, sobald ein früherer einen Wert liefert.

In der Praxis können Optimierer in manchen Engines trotzdem eine sofortige Auswertung vornehmen. Verlassen Sie sich daher nicht darauf, dass COALESCE Fehler wie eine Division durch null verhindert. Garantiert ist jedoch, welcher Wert aufgrund der Reihenfolge von links nach rechts ausgewählt wird.

-- Prefer the manual override, else the computed value,
-- else a constant default
SELECT COALESCE(manual_price, list_price * 1.1, 9.99) AS price
FROM products;

COALESCE und der Ergebnisdatentyp

Ein subtiler Stolperstein: Der Datentyp eines COALESCE-Ergebnisses wird durch die Typpräzedenz aller zusammen betrachteten Argumente bestimmt, nicht nur durch das erste. Das Mischen inkompatibler Typen kann je nach Engine zu Fehlern oder unerwarteter Kürzung führen.

COALESCE über einer Ganzzahlspalte und einem Zeichenketten-Standardwert kann beispielsweise fehlschlagen oder eine implizite Typumwandlung auslösen, abhängig von der Engine. Interviewer prüfen damit, ob Sie auch die Datentypen berücksichtigen.

-- Risky: integer column with a string fallback
-- may error or force a cast depending on dialect
SELECT COALESCE(score, 'N/A') FROM tests;

-- Safer: keep the fallback type-compatible, or cast explicitly
SELECT COALESCE(CAST(score AS VARCHAR), 'N/A') FROM tests;

ISNULL (SQL Server) im Vergleich zu COALESCE

SQL Server bietet ISNULL(expr, replacement). Die Funktion sieht wie COALESCE aus, unterscheidet sich aber in wichtigen Punkten, die Interviewer gerne gegenüberstellen:

  • Anzahl der Argumente: ISNULL akzeptiert genau zwei Argumente, COALESCE beliebig viele.
  • Rückgabetyp: ISNULL verwendet den Typ des ersten Arguments, wodurch der Ersatzwert gekürzt werden kann. COALESCE verwendet die gemeinsame Typpräzedenz.
  • Portabilität: ISNULL gibt es nur in SQL Server, COALESCE ist ANSI-standardisiert.

Eine Empfehlung, die Sie ausdrücklich nennen können: Bevorzugen Sie COALESCE wegen der Portabilität und der vorhersehbaren Typisierung.

-- SQL Server: ISNULL may truncate the replacement to
-- the first argument's type (e.g. CHAR(1))
SELECT ISNULL(code, 'UNKNOWN') FROM items;
-- If code is CHAR(1), 'UNKNOWN' becomes 'U'

-- COALESCE picks the wider type and keeps 'UNKNOWN'
SELECT COALESCE(code, 'UNKNOWN') FROM items;

IFNULL und NVL

Andere Dialekte haben eigene Kurzformen mit zwei Argumenten:

  • MySQL / SQLite: IFNULL(expr, replacement)
  • Oracle: NVL(expr, replacement) sowie NVL2 für eine spezielle Dann-/Sonst-Logik

Alle drei verhalten sich wie ein COALESCE mit zwei Argumenten. Wenn ausdrücklich nach der MySQL- oder Oracle-Schreibweise gefragt wird, nennen Sie diese Funktionen; ansonsten verwenden Sie COALESCE.

-- MySQL
SELECT IFNULL(bonus, 0) FROM employees;

-- Oracle
SELECT NVL(bonus, 0) FROM employees;
-- NVL2(bonus, 'has bonus', 'no bonus') -> if/else on NULL

NULLIF: Die entgegengesetzte Richtung

NULLIF(a, b) gibt NULL zurück, wenn a = b gilt, andernfalls gibt die Funktion a zurück. Sie erzeugt absichtlich einen NULL-Wert und ist damit das Gegenstück zu COALESCE.

Am bekanntesten ist die Funktion zum Verhindern einer Division durch null. Verpacken Sie den Nenner in NULLIF(denominator, 0): Ist er null, wird der Teiler zu NULL und die gesamte Division gibt NULL zurück, statt einen Fehler auszulösen.

-- Avoid divide-by-zero: returns NULL instead of erroring
SELECT revenue / NULLIF(orders, 0) AS avg_order_value
FROM daily_stats;

-- NULLIF(5, 5) -> NULL
-- NULLIF(5, 3) -> 5

NULLIF und COALESCE kombinieren

Die beiden Funktionen ergänzen sich hervorragend. Ein typischer Einzeiler im Vorstellungsgespräch lautet: „Sichere Division, die 0 anzeigt, wenn keine Bestellungen vorhanden sind.“ Verwenden Sie NULLIF, um den Fehler zu vermeiden, und anschließend COALESCE, um den resultierenden NULL-Wert zu ersetzen.

Dieser kompakte Ausdruck signalisiert Sicherheit im Umgang mit SQL: Sie behandeln den Sonderfall und die Darstellung in einem einzigen Ausdruck.

SELECT
  COALESCE(revenue / NULLIF(orders, 0), 0) AS avg_order_value
FROM daily_stats;

-- orders = 0 -> NULLIF gives NULL -> division gives NULL
-- -> COALESCE turns it into 0

Leere Zeichenketten als NULL behandeln

Eine weitere praktische Anwendung von NULLIF ist, leere Zeichenketten in NULL umzuwandeln, damit sie einheitlich mit COALESCE verarbeitet werden können. Unsaubere Daten enthalten häufig sowohl NULL als auch ''; dieses Muster normalisiert beides.

Lesen Sie das Muster so: „Wenn der Wert leer ist, machen Sie ihn zu NULL und verwenden Sie anschließend einen Standardwert.“ Das ist eine saubere, portable Antwort auf die Frage: „Wie behandeln Sie leere und fehlende Werte gleich?“

-- Treat both '' and NULL as missing, default to 'Anonymous'
SELECT COALESCE(NULLIF(TRIM(username), ''), 'Anonymous')
FROM users;

Tiefergehendes Beispiel: COALESCE über JOINs hinweg

Nach einem LEFT JOIN enthalten nicht übereinstimmende Zeilen auf der rechten Seite NULL-Werte. COALESCE wandelt diese in der Ausgabe in sinnvolle Standardwerte um – eine sehr häufige Anforderung bei Berichten.

Hier erscheinen Kunden ohne Bestellungen weiterhin dank LEFT JOIN, und ihre Gesamtsumme wird als 0 statt als NULL angezeigt. Wenn Sie erwähnen, dass COALESCE nach dem Join und nicht innerhalb des Joins angewendet wird, zeigen Sie, dass Sie die Auswertungsreihenfolge verstehen.

SELECT
  c.name,
  COALESCE(SUM(o.amount), 0) AS total_spent
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id
GROUP BY c.name;
-- Customers with no orders get 0 instead of NULL

Wichtige Punkte fürs Vorstellungsgespräch

Zusammenfassung der Werkzeuge zum Ersetzen von NULL:

  • COALESCE(a, b, ...): erster Nicht-NULL-Wert, mehrere Argumente, ANSI-standardisiert, Typ gemäß Präzedenz. Die Standardwahl.
  • ISNULL / IFNULL / NVL: herstellerspezifische Kurzformen mit zwei Argumenten; ISNULL kann auf den Typ des ersten Arguments kürzen.
  • NULLIF(a, b): gibt NULL zurück, wenn die Werte gleich sind; eignet sich hervorragend zum Verhindern von Divisionen durch null und zum Normalisieren leerer Zeichenketten.
  • Kombinieren Sie COALESCE(x / NULLIF(y, 0), 0) für eine sichere und gut darstellbare Division.

Beginnen Sie mit COALESCE und erwähnen Sie herstellerspezifische Varianten nur, wenn der Dialekt feststeht.

Schnelltest

Wählen Sie den Ausdruck für eine sichere Division.

Zusammenfassung

Sie können jetzt NULL-Werte ersetzen und erzeugen:

  • COALESCE gibt aus mehreren Argumenten den ersten Nicht-NULL-Wert zurück und ist die portable Standardlösung.
  • ISNULL (SQL Server), IFNULL (MySQL) und NVL (Oracle) sind Kurzformen mit zwei Argumenten; ISNULL kann auf den Typ des ersten Arguments kürzen.
  • NULLIF(a, b) gibt NULL zurück, wenn die beiden Werte gleich sind, und eignet sich ideal zum Verhindern von Divisionen durch null sowie zum Normalisieren leerer Zeichenketten.
  • Kombinieren Sie diese Funktionen für sichere, gut darstellbare Ausdrücke und um NULL-Werte nach LEFT JOINs durch Standardwerte zu ersetzen.

Letzte Lektion: das Verhalten von NULL in Aggregatfunktionen, Joins und DISTINCT.

Häufig gestellte Fragen

Ist die Lektion „COALESCE, NULLIF und ISNULL“ kostenlos?

Ja — der vollständige Text von „COALESCE, NULLIF und ISNULL“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Coding Interview Prep-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Coding Interview Prep-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „COALESCE, NULLIF und ISNULL“?

Standardwerte einsetzen und den Unterschied zwischen COALESCE und herstellerspezifischen Funktionen verstehen Du übst Coding Interview Prep mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Coding Interview Prep zu starten?

Keine Vorkenntnisse erforderlich. Coding Interview Prep auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „COALESCE, NULLIF und ISNULL“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Coding Interview Prep-Lektion Code schreiben und ausführen?

Ja. Jede Coding Interview Prep-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Dreiwertige Logik und UNKNOWN
  2. IS NULL, IS NOT NULL und NULL-sichere Gleichheit
  3. COALESCE, NULLIF und ISNULL
  4. NULL-Werte in Aggregaten, JOINs und DISTINCT
← Zurück zu Coding Interview Prep