NULL-Funktionen
Abfragen verfeinern
NULL bedeutet „unbekannt“ oder „kein Wert“. Rechnest du damit, wird das Ergebnis ebenfalls NULL – das kann Summen oder angezeigte Texte verfälschen. NULL-Funktionen ersetzen ein NULL durch einen Ersatzwert. Leider heißt die passende Funktion in jedem Dialekt anders.
Die Funktionen je Dialekt
- MySQL:
IFNULL(wert, ersatz)oderCOALESCE(...) - SQL Server:
ISNULL(wert, ersatz)oderCOALESCE(...) - Oracle:
NVL(wert, ersatz)oderCOALESCE(...) - Standard-SQL (überall):
COALESCE(wert1, wert2, …)
COALESCE ist die portabelste Wahl und nimmt mehrere Argumente: Es liefert das erste, das nicht NULL ist.
Beispiel
Die Spalte Umsatz ist bei manchen Kunden NULL. Für die Anzeige soll dort 0 stehen:
SELECT Name, COALESCE(Umsatz, 0) AS Umsatz FROM Kunden;
| Name | Umsatz |
|---|---|
| Müller GmbH | 98000 |
| Neukunde e.K. | 0 |
Beispiel: Rechnen ohne NULL-Falle
-- Ohne Schutz: NULL * Menge = NULL SELECT COALESCE(Umsatz, 0) * 1.1 AS Prognose FROM Kunden;
Mehrere Alternativen
COALESCE probiert Argumente von links nach rechts:
SELECT COALESCE(Mobil, Festnetz, 'keine Nummer') AS Kontakt FROM Kontakte;
Stolperfalle
Prüfe nie mit = NULL oder != NULL – das ergibt immer „unbekannt“ und liefert keine Zeilen. Verwende stattdessen IS NULL bzw. IS NOT NULL. Beachte außerdem, dass ISNULL in SQL Server den Datentyp des ersten Arguments übernimmt, während COALESCE den höchsten gemeinsamen Typ bestimmt – das kann bei kurzen Texten zu abgeschnittenen Werten führen.
Welche NULL-Funktion ist in allen gängigen Datenbanken verfügbar (Standard-SQL)?