CoalEsce
Diese Funktion erfordert zwei oder mehrere Ausdrücke und liefert das erstes Argument zurück, welches
von NULL verschieden ist. Ansonsten wird NULL zurückgegeben.
Syntax
CoalEsce (<erster Ausdruck>, <zweiter Ausdruck> [, weitere kommagetrennte Ausdrücke])
Parameterliste
- <erster Ausdruck>, <zweiter Ausdruck>
- Beliebiger Ausdruck. Alle weiteren Ausdrücke müssen von demselben Typ oder implizit
in diesen Typ konvertierbar sein.
- Rückgabewert
- Datentyp, welcher dem gemeinsamen Datentyp in der Argumentliste entspricht
- Typ
- sonstige Funktion
Beispiele
CoalEsce(Personen.Nachname + ', ' + Personen.Vorname, Personen.Nachname)
Die Tabelle
Personen mag zwei Spalten
Nachname und
Vorname enthalten,
Nachname ist ein Pflichtfeld,
Vorname ist optional. Es soll, falls möglich, Nachname +
Komma + Vorname ausgegeben werden. Verknüpft man die beiden Felder direkt und ist ein Feld
Vorname nicht belegt,
so wird die Verknüpfung zu NULL ausgewertet, also auch kein Nachname ausgegeben. Damit ist der erste Ausdruck für die
CoalEsce-Funktion gleich NULL. Der zweite Ausdruck liefert jedoch einen Eintrag und wird ausgegeben.
Das gleiche Ergebnis liefert:
Personen.Nachname + CoalEsce(', ' + Personen.Vorname, '')
Hier wird immer der Nachname plus - bei vorhandenem Vornamen - dieser mit vorgestelltem Komma ausgegeben, ansonsten wird
ein Leerstring angefügt.
Hinweise
Mindestens einer der Ausdrücke muß einen Datentyp zurückliefern, eine Nutzung
CoalEsce(Null, Null, Null)
wird zurückgewiesen. Man kann jedoch mit
Cast/Convert einen Datentyp erzwingen, indem man als ersten Parameter
Null per Cast vom gewünschten Typ deklariert:
CoalEsce(Cast(Null as nvarchar(50)), Null)
gibt den zweiten Null-Wert mit Datentyp nvarchar(50) zurück.
Das obige Beispiel kann auch so gelöst werden, daß mittels der CASE-Verzweigung geprüft wird, ob die Zelle
Vorname leer ist:
SELECT CASE When A.Vorname Is Null Then A.Nachname
Else A.Nachname + ', ' + A.Vorname
FROM Personen As A
Die CASE-Verzweigung ist jedoch ein sehr mächtiges Werkzeug, so daß in solchen einfachen Fällen wie dem
obigen die CoalEsce-Funktion die schnellere Lösung sein dürfte.
© 2003-2009 Jürgen Auer, Berlin.