IS NULL, IS NOT NULL und COALESCE
Erkennen Sie NULL-Werte mit IS NULL, ersetzen Sie sie mit COALESCE / NULLIF und entwerfen Sie Abfragen, die fehlende Daten problemlos verkraften.
IS NULL, IS NOT NULL und COALESCE ist eine kostenlose SQL Academy-Lektion auf CoddyKit. Dies ist Lektion 4 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.
Auf NULL prüfen
Verwenden Sie IS NULL und IS NOT NULL – niemals = NULL:
SELECT * FROM users WHERE deleted_at IS NULL;
SELECT * FROM users WHERE deleted_at IS NOT NULL;Warum = NULL stillschweigend fehlschlägt
Der Vergleich eines beliebigen Werts mit NULL ergibt NULL (unbekannt). Die Zeile wird verworfen – Sie erhalten jedoch keinen Fehler, sodass der Fehler unbemerkt in die Auslieferung gelangt:
SELECT * FROM users WHERE deleted_at = NULL;
-- → returns 0 rows, alwaysCOALESCE: Erster Wert ungleich NULL
COALESCE akzeptiert eine beliebige Anzahl von Argumenten und gibt das erste zurück, das nicht NULL ist:
SELECT id,
COALESCE(nickname, full_name, email, 'Anonymous') AS display_name
FROM users;COALESCE in WHERE
Verwenden Sie COALESCE, um NULL in einen sortierbaren bzw. vergleichbaren Standardwert umzuwandeln:
-- Treat NULL last_login_at as the epoch:
SELECT * FROM users
ORDER BY COALESCE(last_login_at, '1970-01-01') DESC;NULLIF: Das Gegenteil
NULLIF(a, b) gibt NULL zurück, wenn a = b gilt, andernfalls a:
-- Treat 0 as missing so AVG ignores it:
SELECT AVG(NULLIF(price, 0)) FROM products;
-- Convert empty string to NULL on insert:
INSERT INTO contacts (phone) VALUES (NULLIF(:phone, ''));CASE für bedingte Standardwerte
CASE ist die vielseitig einsetzbare Alternative, wenn COALESCE nicht flexibel genug ist:
SELECT id,
CASE
WHEN status IS NULL OR status = '' THEN 'unknown'
WHEN status = 'A' THEN 'active'
ELSE status
END AS status_label
FROM users;NULL in CHECK und Constraints
Eine CHECK-Constraint ist erfüllt, wenn die Bedingung NULL ist. Formulieren Sie die Bedingung ausdrücklich, wenn Sie NULL verbieten müssen:
CREATE TABLE prices (
amount NUMERIC(10,2),
CHECK (amount > 0) -- amount = NULL passes!
);
-- Better:
CREATE TABLE prices2 (
amount NUMERIC(10,2) NOT NULL CHECK (amount > 0)
);NULL in JOIN ON
Zeilenpaare, deren Join-Schlüssel NULL ist, stimmen nie überein – NULL = NULL ergibt NULL. Verwenden Sie IS NOT DISTINCT FROM, wenn NULL gleich NULL sein soll:
SELECT * FROM a JOIN b ON a.key IS NOT DISTINCT FROM b.key;NULL-Werte und UNIQUE
Standard-SQL behandelt NULL-Werte in UNIQUE-Constraints als verschieden – Sie können viele Zeilen mit NULL haben:
CREATE TABLE invites (
id BIGSERIAL PRIMARY KEY,
email VARCHAR(255) UNIQUE
);
INSERT INTO invites (email) VALUES (NULL), (NULL); -- both succeed!Zusammenfassung: NULL-Werte und Aggregatfunktionen
Aggregatfunktionen (außer COUNT(*)) ignorieren NULL-Werte.
SELECT COUNT(*) FROM users; -- all rows
SELECT COUNT(email) FROM users; -- rows where email IS NOT NULL
SELECT COUNT(DISTINCT id) FROM users;NOT NULL immer deklarieren, wenn möglich
NOT NULL ist die einfachste und stärkste Garantie für die Korrektheit. Fügen Sie es jeder Spalte hinzu, die niemals leer sein darf.
Zusammenfassung
Der Umgang mit NULL ist die mit Abstand größte Quelle subtiler SQL-Fehler.
- Mit
IS NULLprüfen - Mit
COALESCEersetzen - Platzhalterwerte mit
NULLIFin NULL umwandeln - Standardmäßig
NOT NULLverwenden
Kurzer Check
Welcher Ausdruck gibt email zurück, wenn der Wert nicht NULL ist, andernfalls das Literal 'no-email'?
Häufig gestellte Fragen
Ist die Lektion „IS NULL, IS NOT NULL und COALESCE“ kostenlos?
Ja — der vollständige Text von „IS NULL, IS NOT NULL und COALESCE“ 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 „IS NULL, IS NOT NULL und COALESCE“?
Erkennen Sie NULL-Werte mit IS NULL, ersetzen Sie sie mit COALESCE / NULLIF und entwerfen Sie Abfragen, die fehlende Daten problemlos verkraften. 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 4 von 4.
Wie lange dauert die Lektion „IS NULL, IS NOT NULL und COALESCE“?
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
- LIKE-Muster und Platzhalter
- IN und NOT IN für Mengen
- BETWEEN für Wertebereiche
- IS NULL, IS NOT NULL und COALESCE