IIF (Transact-SQL)
Gibt einen von zwei Werten zurück, abhängig davon, ob der boolesche Ausdruck "true" oder "false" in SQL Server ergibt.
Transact-SQL-Syntaxkonventionen
Gilt für: SQL Server (SQL Server 2012 bis aktuelle Version), Windows Azure SQL-Datenbank (Ursprüngliche Version bis aktuelle Version). |
Syntax
IIF ( boolean_expression, true_value, false_value )
Argumente
boolean_expression
Ein gültiger boolescher Ausdruck.Wenn dieses Argument kein boolescher Ausdruck ist, wird ein Syntaxfehler ausgelöst.
true_value
Dieser Wert wird zurückgegeben, wenn boolean_expression "true" ergibt.false_value
Dieser Wert wird zurückgegeben, wenn boolean_expression "false" ergibt.
Rückgabetypen
Gibt den Datentyp mit dem höchsten Rang unter den Typen in true_value und in false_value zurück. Weitere Informationen finden Sie unter Rangfolge der Datentypen (Transact-SQL).
Hinweise
IIF ist eine schnelle Möglichkeit zum Schreiben eines CASE-Ausdrucks. Hierdurch wird der als erstes Argument übergebenen booleschen Ausdruck ausgewertet und eines der beiden anderen Argumente auf Grundlage des Ergebnisses der Auswertung zurückgegeben. Das heißt, dass bei einem zutreffenden (true) booleschen Ausdruck true_value bei einem unzutreffenden oder unbekannten (false oder unknown) booleschen Ausdruck false_value zurückgegeben wird. true_value und false_value können ein beliebiger Typ sein. Die gleichen Regeln, die für den CASE-Ausdruck für boolesche Ausdrücke, NULL-Behandlung und Rückgabetypen gelten, sind auch für IIF gültig. Weitere Informationen finden Sie unter CASE (Transact-SQL).
Die Tatsache, dass IIF in CASE übersetzt wird, wirkt sich auch auf andere Aspekte des Verhaltens dieser Funktion aus. Da CASE-Ausdrücke nur bis zur Ebene 10 geschachtelt werden können, können auch IIF-Anweisungen nur bis zu einer maximalen Ebene von 10 geschachtelt werden. Außerdem wird IIF remote an andere Server als semantisch gleichwertiger CASE-Ausdruck übergeben, einschließlich aller Verhaltensweisen eines remote ausgeführten CASE-Ausdrucks.
Beispiele
A.Einfaches Beispiel für IIF
DECLARE @a int = 45, @b int = 40;
SELECT IIF ( @a > @b, 'TRUE', 'FALSE' ) AS Result;
Dies ist das Resultset.
Result
--------
TRUE
(1 row(s) affected)
B.IIF mit NULL-Konstanten
SELECT IIF ( 45 > 30, NULL, NULL ) AS Result;
Das Ergebnis dieser Anweisung ist ein Fehler.
C.IIF mit NULL-Parametern
DECLARE @P INT = NULL, @S INT = NULL;
SELECT IIF ( 45 > 30, @p, @s ) AS Result;
Dies ist das Resultset.
Result
--------
NULL
(1 row(s) affected)