Logische Funktionen: IIF (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure 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 )

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 (12.x) und früher finden Sie unter Dokumentation zu früheren Versionen.

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 ist das Resultset.

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 ist das Resultset.

Result  
--------  
NULL  

Nächste Schritte