Fonctions logiques - IIF (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Retourne l'une des deux valeurs possibles, selon que l'expression booléenne renvoie true ou false dans SQL Server.

Conventions de la syntaxe Transact-SQL

Syntaxe

IIF( boolean_expression, true_value, false_value )

Remarque

Pour afficher la syntaxe Transact-SQL pour SQL Server 2014 (12.x) et versions antérieures, consultez la Documentation sur les versions antérieures.

Arguments

boolean_expression

Expression booléenne valide.

Si cet argument n’est pas une expression booléenne, une erreur de syntaxe est générée.

true_value

Valeur à renvoyer si boolean_expression a la valeur true.

false_value

Valeur à renvoyer si boolean_expression a la valeur false.

Types de retour

Renvoie le type de données ayant la priorité la plus élevée parmi les types dans true_value et false_value. Pour plus d’informations, consultez Priorités des types de données (Transact-SQL).

Remarques

IIF est un moyen rapide d'écrire une expression CASE. Elle évalue l'expression booléenne passée comme premier argument, puis retourne l'un des deux autres arguments selon le résultat de l'évaluation. Autrement dit, true_value est renvoyé si l’expression booléenne a pour valeur true, et false_value est retourné si l’expression booléenne a pour valeur false ou une valeur inconnue. true_value et false_value peuvent être de n’importe quel type. Les règles qui s'appliquent à l'expression CASE pour les expressions booléennes, la gestion de la valeur NULL et les types de retour s'appliquent également à IIF. Pour plus d’informations, consultez CASE (Transact-SQL).

Le fait que IIF soit convertie en CASE a également un impact sur d'autres aspects du comportement de cette fonction. Étant donné que les expressions CASE peuvent être imbriquées seulement jusqu'à un niveau de 10, les instructions IIF peuvent également être imbriquées uniquement jusqu'à un niveau maximal de 10. En outre, IIF est exécutée à distance sur d'autres serveurs en tant qu'expression CASE sémantiquement équivalente, avec tous les comportements d'une expression CASE exécutée à distance.

IIF n’est pas prise en charge dans les pools SQL dédiés dans Azure Synapse Analytics.

Exemples

R. Exemple IIF simple

DECLARE @a INT = 45, @b INT = 40;
SELECT [Result] = IIF( @a > @b, 'TRUE', 'FALSE' );

Voici le jeu de résultats obtenu.

Result  
--------  
TRUE  

B. IIF avec des constantes NULL

SELECT [Result] = IIF( 45 > 30, NULL, NULL );

Le résultat de cette instruction est une erreur.

C. IIF avec des paramètres NULL

DECLARE @P INT = NULL, @S INT = NULL;  
SELECT [Result] = IIF( 45 > 30, @P, @S );

Voici le jeu de résultats obtenu.

Result  
--------  
NULL  

Étapes suivantes