Neue T-SQL Funktionen im SQL Server 2012 (Teil 4/4)

15. Februar 2012

Im letzten Teil der Serie möchte ich die neuen Logikfunktionen CHOOSE und IIF vorstellen. Diese wurden hauptsächlich für eine einfachere Portierung von Abfragen aus Access eingeführt und bieten keine grundsätzlich neue Funktionalität.

CHOOSE

Die CHOOSE Funktion entspricht weitestgehend der CASE Funktion und besteht aus zwei Teilen. Der Erste Teil ist ein Integer- oder Floatwert und definiert die Position des Ausgabewertes innerhalb der nachfolgenden Werte. Der zweite Teil definiert eine Liste aus möglichen Ausgabewerten. Floatwerte im ersten Parameter werden in Integerwerte umgewandelt.

Ist der übergebene Index größer als die Anzahl der möglichen Ausgabewerte wird NULL zurückgegeben.

Hier ein kleines Beispiel:

SELECT 
CHOOSE(1, 'A', 'B', 'C') AS Erster,
CHOOSE(2, 'A', 'B', 'C') AS Zweiter,
CHOOSE(3.9, 'A', 'B', 'C') AS FloatWert,
CHOOSE(4, 'A', 'B', 'C') AS Ausserhalb;

Das Ergebnis ist dann wie folgt:
Erster    Zweiter   FloatWert    Ausserhalb
------ ------ ------ ------
A B C NULL

IIF

Die IIF Funktion erwartet drei Parameter.  Ist der erste Parameter Wahr, wird der zweite Parameter als Ergebnis zurückgegeben. Andernfalls ist der dritte Parameter das Ergebnis.

SELECT IIF ( 1 < 2, 'WAHR', 'FALSCH' ) AS Ergebnis;

Genau wie die CHOOSE Funktion kann diese Abfrage auch mit CASE erstellt werden. Sinn und zweck ist schlicht eine einfache Portierung von Access auf SQL Server.