Null-Werte bei SELECT abfangen

Mischa Sameli, Geschäftsführer & Leiter Entwicklung

Grad heute bin ich wieder auf das Problem mit Null-Werten bei Datenbank-Abfragen gestossen und halte deshalb auch die Lösung fest.

Kurz das Problem: bei Left-Joins kann es ja sein, dass kein Wert für die gewünschte Spalte zurückgeliefert wird. Das wird dann mühsam beim Auswerten. MSSQL hat dafür einen Befehl: ISNULL(fremdspalte,ersatzwert)
Genau damit kann definiert werden, welcher Wert gesetzt werden soll, wenn die Fremdspalte nichts ergibt. Ein Beispiel:

1SELECT a.ID,a.Name, ISNULL(b.Lohn,0) as Einkommen
2FROM Personal a
3LEFT JOIN Loehne b ON a.ID = b.Personal_ID

In MySQL sieht das Ganze fast gleich aus: IFNULL(fremdspalte,ersatzwert).

1SELECT a.ID,a.Name, IFNULL(b.Lohn,0) as Einkommen
2FROM Personal a
3LEFT JOIN Loehne b ON a.ID = b.Personal_ID

Auch in PostgreSQL lässt sich eine ensprechende Abfrage formulieren. Dabei verwenden wir die Coalesce-Funktion:

1SELECT a.id,a.name, COALESCE(b.lohn,0) as einkommen
2FROM personal a
3LEFT JOIN loehne b ON a.id = b.personal_id

Wenn nun jemand zwar in der Personal-Tabelle vorkommt, aber keinen Lohn bezieht, wird in der Ergebnistabelle dem Wert "Einkommen" 0 zugewiesen.