Fonctions logiques - IIF (Transact-SQL)
S’applique à : SQL Server Azure SQL Database Azure 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 )
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