Logische Funktionen: IIF (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance
Gibt einen von zwei Werten zurück, abhängig davon, ob der boolesche Ausdruck "true" oder "false" in SQL Server ergibt.
Transact-SQL-Syntaxkonventionen
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
Der zurückzugebende Wert, wenn boolean_expression den Wert TRUE ergibt.
false_value
Der zurückzugebende Wert, wenn boolean_expression den Wert 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).
Bemerkungen
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 und bei einem unzutreffenden oder unbekannten (FALSE oder unbekannt) booleschen Ausdruck false_value zurückgegeben wird. true_value und false_value können einen beliebigen Typ aufweisen. 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.
IIF wird in dedizierten SQL-Pools in Azure Synapse Analytics nicht unterstützt.
Beispiele
A. Einfaches Beispiel für IIF
DECLARE @a INT = 45, @b INT = 40;
SELECT [Result] = IIF( @a > @b, 'TRUE', 'FALSE' );
Hier sehen Sie das Ergebnis.
Result
--------
TRUE
B. IIF mit NULL-Konstanten
SELECT [Result] = IIF( 45 > 30, NULL, NULL );
Das Ergebnis dieser Anweisung ist ein Fehler.
C. IIF mit NULL-Parametern
DECLARE @P INT = NULL, @S INT = NULL;
SELECT [Result] = IIF( 45 > 30, @P, @S );
Hier sehen Sie das Ergebnis.
Result
--------
NULL