COALESCE für NULL-Werte
Teil des Abschnitts Über die Grundlagen hinaus der SQL-Journey von Coddy — Lektion 3 von 27.
COALESCE gibt das erste Argument zurück, das nicht NULL ist:
COALESCE(nickname, first_name, 'Anonymous')Liest von links nach rechts und stoppt beim ersten Nicht-Null-Wert. Es ist die sauberste Methode, einen Fallback-Wert in einer Abfrage bereitzustellen, ohne dass CASE benötigt wird.
Häufige Anwendungen:
- Zeige
0anstelle vonNULLaus einemLEFT JOIN:COALESCE(SUM(amount), 0) - Wähle das erste nicht leere optionale Feld:
COALESCE(mobile, home, work)
Aufgabe
EinfachVerfügbare Tabellen und Spalten:
<strong>users</strong>:<strong>id</strong>,<strong>display_name</strong>,<strong>email</strong><strong>orders</strong>:<strong>user_id</strong>,<strong>amount</strong>
Geben Sie eine Zeile pro Benutzer zurück mit:
idlabel:display_namefalls gesetzt, ansonstenemail, ansonsten'unknown'total_spent: Summe deramount-Werte der Bestellungen des Benutzers; Benutzer ohne Bestellungen sollten0(nichtNULL) anzeigen
Sortieren Sie nach id. Hinweis: Ein LEFT JOIN von users zu orders zusammen mit COALESCE(SUM(...), 0) behandelt die fehlenden Zeilen.
Spickzettel
COALESCE gibt das erste Nicht-NULL-Argument zurück:
COALESCE(nickname, first_name, 'Anonymous')Häufige Anwendungsfälle:
- Ersatz-Anzeigewert:
COALESCE(mobile, home, work) - Ersetzen von
NULLausLEFT JOIN-Aggregaten:COALESCE(SUM(amount), 0)
Probier es selbst
SELECT u.id,
-- label über COALESCE
-- total_spent über COALESCE(SUM(...), 0)
FROM users u
LEFT JOIN orders o ON o.user_id = u.id
GROUP BY u.id
ORDER BY u.id
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Über die Grundlagen hinaus
1Bedingte Logik
CASE WHENCASE in ORDER BYCOALESCE für NULL-WerteNULLIF und IIFZusammenfassung - Anwesenheit