0Pricing
SQL Academy · Lektion

COALESCE und NULLIF

Standardwerte bereitstellen und Division durch null vermeiden

COALESCE und NULLIF ist eine kostenlose SQL Academy-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 SQL Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.

Fehlende Werte ersetzen

NULL-Werte zu erkennen, ist nur die halbe Miete — oft möchten Sie sie durch einen sinnvollen Standardwert ersetzen. Die SQL-Funktion COALESCE erledigt genau das.

Wenn Sie dagegen absichtlich einen NULL-Wert erzeugen möchten, zum Beispiel um eine Division durch null zu vermeiden, ist NULLIF das richtige Werkzeug. Diese Lektion behandelt beide Funktionen.

-- Show a placeholder when phone is missing
SELECT name, COALESCE(phone, 'no phone on file') AS phone
FROM customers;

So funktioniert COALESCE

COALESCE akzeptiert beliebig viele Argumente und gibt von links nach rechts das erste Nicht-NULL-Argument zurück.

Sind alle Argumente NULL, ist auch das Ergebnis NULL. Stellen Sie es sich so vor: „Verwende dies, oder jenes, oder schließlich diesen Ersatzwert“.

SELECT
  COALESCE(NULL, NULL, 'third', 'fourth') AS a, -- 'third'
  COALESCE(NULL, 42)                       AS b, -- 42
  COALESCE(NULL, NULL)                     AS c; -- NULL

Ersatzwerte verketten

Da COALESCE viele Argumente akzeptiert, können Sie eine Kette von Prioritäten aufbauen.

Bevorzugen Sie beispielsweise zuerst eine Mobilfunknummer, dann eine geschäftliche Nummer, anschließend eine private Nummer und schließlich eine feste Nachricht.

SELECT name,
  COALESCE(mobile, work_phone, home_phone, 'unreachable') AS best_contact
FROM contacts;

Standardwerte in Berechnungen

NULL-Werte werden durch arithmetische Operationen weitergegeben, sodass ein einziger fehlender Wert eine gesamte Berechnung zu NULL machen kann. Umschließen Sie die möglicherweise NULL enthaltende Eingabe mit COALESCE, um einen neutralen Wert einzusetzen.

Hier wird ein fehlender Rabatt als 0 behandelt.

-- Without COALESCE, a NULL discount makes total NULL
SELECT
  price - COALESCE(discount, 0) AS total
FROM line_items;

Typregeln für COALESCE

Alle Argumente von COALESCE müssen kompatible Typen haben. PostgreSQL wählt einen gemeinsamen Typ und gibt einen Fehler aus, wenn das nicht möglich ist.

Sie können beispielsweise eine Zahl und eine Freitextzeichenfolge nicht ohne Umwandlung mischen — auch der Ersatzwert muss eine Zahl sein.

-- OK: both integers
SELECT COALESCE(score, 0) FROM results;

-- Cast when mixing types
SELECT COALESCE(score::text, 'n/a') FROM results;

NULLIF kennenlernen

NULLIF(a, b) ist sinngemäß das Gegenteil von COALESCE: Die Funktion gibt NULL zurück, wenn a = b gilt, und andernfalls a.

So lässt sich ein bestimmter „Sentinel“-Wert kompakt in einen echten NULL-Wert umwandeln.

SELECT
  NULLIF(5, 5)   AS a,  -- NULL (equal)
  NULLIF(5, 9)   AS b,  -- 5    (not equal)
  NULLIF('', '') AS c;  -- NULL (treat empty string as missing)

NULLIF zur Vermeidung von Division durch null

Der klassische Anwendungsfall für NULLIF ist die Vermeidung von Divisionsfehlern. Eine Division durch 0 löst einen Fehler aus, während eine Division durch NULL einfach NULL ergibt.

Umschließen Sie den Divisor mit NULLIF(divisor, 0), um einen Absturz in einen sicheren NULL-Wert umzuwandeln.

-- If total_visits is 0, this would error.
-- NULLIF turns the divisor into NULL, giving a NULL ratio instead.
SELECT
  conversions / NULLIF(total_visits, 0) AS conversion_rate
FROM campaigns;

NULLIF und COALESCE kombinieren

NULLIF und COALESCE ergänzen sich gut. Verwenden Sie NULLIF, um einen Sentinel-Wert in NULL umzuwandeln, und anschließend COALESCE, um diesem NULL-Wert einen sinnvollen Standardwert zu geben.

Hier wird eine Notiz mit leerer Zeichenfolge zum festen Text „—“.

-- Treat '' as missing, then display a dash
SELECT
  COALESCE(NULLIF(note, ''), '—') AS display_note
FROM tickets;

Sicheres Durchschnittsverhältnis

Setzen Sie beides zu einer robusten Analyseabfrage zusammen: Vermeiden Sie mit NULLIF eine Division durch null und zeigen Sie anschließend mit COALESCE statt NULL den Wert 0 an.

Die Abfrage erzeugt niemals einen Fehler und zeigt immer eine übersichtliche Zahl an.

SELECT
  product_id,
  COALESCE(returns / NULLIF(orders, 0), 0) AS return_rate
FROM product_stats;

COALESCE vs IS NULL

Beide Funktionen behandeln NULL-Werte, dienen aber unterschiedlichen Zwecken:

  • IS NULL / IS NOT NULL — in einer Bedingung auf fehlende Werte prüfen.
  • COALESCE — einen Wert in der Ausgabe ersetzen.

Verwenden Sie COALESCE, wenn Sie Ergebnisse gestalten, und IS NULL, wenn Sie filtern.

-- Filter (IS NULL)
SELECT * FROM customers WHERE phone IS NULL;

-- Substitute (COALESCE)
SELECT COALESCE(phone, 'unknown') FROM customers;

Alles zusammenführen

Eine kurze Übersicht zu dieser Lektion:

  • COALESCE(a, b, c) → erster Nicht-NULL-Wert.
  • NULLIF(a, b) → NULL bei Gleichheit, andernfalls a.
  • Verwenden Sie NULLIF(divisor, 0), um eine Division durch null zu vermeiden.
  • Verwenden Sie COALESCE, um in Berechnungen und Ausgaben Standardwerte bereitzustellen.
SELECT
  COALESCE(nickname, full_name, 'guest')       AS display_name,
  revenue / NULLIF(orders, 0)                  AS avg_order_value
FROM accounts;

Schnelltest

Was gibt NULLIF(amount, 0) zurück, wenn amount den Wert 0 hat?

Zusammenfassung

Sie können jetzt NULL-Werte mit COALESCE durch Standardwerte ersetzen (der erste Nicht-NULL-Wert wird verwendet) und mit NULLIF gezielt NULL-Werte erzeugen (NULL, wenn zwei Werte übereinstimmen).

Sie haben das Muster zur Vermeidung einer Division durch null kennengelernt und gesehen, wie sich beide Funktionen für eine sichere, übersichtliche Ausgabe verketten lassen. Als Nächstes untersuchen Sie, wie sich NULL-Werte in COUNT, SUM und JOINs verhalten.

SELECT
  COALESCE(NULLIF(comment, ''), 'no comment') AS comment,
  total / NULLIF(qty, 0)                       AS unit_price
FROM invoices;

Häufig gestellte Fragen

Ist die Lektion „COALESCE und NULLIF“ kostenlos?

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

Was lerne ich in „COALESCE und NULLIF“?

Standardwerte bereitstellen und Division durch null vermeiden Du übst SQL Academy 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 SQL Academy zu starten?

Keine Vorkenntnisse erforderlich. SQL Academy 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 und NULLIF“?

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 SQL Academy-Lektion Code schreiben und ausführen?

Ja. Jede SQL Academy-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. Was NULL wirklich bedeutet
  2. IS NULL und IS NOT NULL
  3. COALESCE und NULLIF
  4. NULL in Aggregationen und Joins
← Zurück zu SQL Academy