<optionaler Titel plus Leerzeichen> <Personenname>
ausgegeben werden, so erzeugt die direkte Verknüpfung
B.Titel + ' ' + A.Personenname
Null für alle Personen ohne Titel, da jede Verknüpfung mit Null selbst zu Null ausgewertet wird. Eine Abhilfe schafft hier die IsNull-Funktion:
IsNull(B.Titel + ' ', '') + A.Personenname
Ist B.Titel Null, so auch B.Titel + ' ', also wird nur ein Leerstring eingefügt, ansonsten wird die gewünschte Darstellung erzeugt.
Eine zweite Verwendungsmöglichkeit besteht darin, bei der Nutzung von Aggregatfunktionen mit der IsNull-Funktion Standardwerte für jene Zellen einzufügen, die leer sind. Aggregatfunktionen ignorieren üblicherweise Null-Werte. Man betrachte die folgende Tabelle:
Eintrag |
---|
0.0 |
1.0 |
2.0 |
Null |
Die folgende Liste zeigt die verschiedenen Rückgabewerte
Aggregat | Ergebnis | Hinweise |
---|---|---|
Count(*) | 4 | Count(*) zählt immer alle Zeilen |
Count(Eintrag) | 3 | Count(<Spaltenname>) zählt nur die Zeilen <> Null |
Count(IsNull(Eintrag, 0)) | 4 | Die Zelle = Null wird mit 0.0 belegt und mitgezählt |
Sum(Eintrag) | 3.0 | = 0.0 + 1.0 + 2.0 |
Sum(IsNull(Eintrag, 0)) | 3.0 | = 0.0 + 1.0 + 2.0 + 0.0 |
Avg(Eintrag) | 1.0 | = (0.0 + 1.0 + 2.0) / 3 |
Avg(IsNull(Eintrag, 0)) | 0.7500 | = (0.0 + 1.0 + 2.0 + 0.0) / 4 |
Falls ein Standardwert inhaltlich sinnvoll ist, kann er auf diese Weise ad hoc eingefügt werden, ohne daß die Grunddaten per Update-Befehl verändert werden müssen. Bei einer Aggregatfunktion, welche auf die Zahl der gefundenen Zeilen bezug nimmt (Avg (Mittelwert) = Summe / Anzahl der Zeilen) verändert sich das Ergebnis. Werden bsp. Artikel ohne Preisauszeichnung mit dieser Technik auf einen Preis von 0.0 gesetzt, so verringert sich nun der Durchschnittspreis. In solchen Fällen ist die direkte Auswertung mit Avg(<Spalte>), welche die Nullwerte sowohl beim Addieren der Werte als auch bei der Berechnung der Anzahl der ausgewerteten Zeilen ignoriert, sinnvoller.
Die Funktion ist eine verkürzte Version der Case -Verzweigung und könnte durch den folgenden Ausdruck ersetzt werden:
Case
When <zu prüfender Ausdruck> Is Null Then <Ersatzausdruck
Else <zu prüfender Ausdruck>
End