IIF (Transact-SQL)

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

Icône Lien de rubrique 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 à retourner si boolean_expression renvoie true.

  • false_value
    Valeur à retourner si boolean_expression renvoie false.

Type des valeurs retournées

Retourne 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).

Notes

IIF est un moyen rapide d'écrire une instruction 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 retourné si l'expression booléenne est true et false_value est retourné si l'expression booléenne est false ou inconnue. true_value et false_value peuvent être de n'importe quel type. Les règles qui s'appliquent à l'instruction 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 instructions 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'instruction sémantiquement équivalente de CASE, avec tous les comportements d'une instruction CASE exécutée à distance.

Exemples

A.Exemple IIF simple

DECLARE @a int = 45;
DECLARE @b int = 40;
SELECT IIF ( @a > @b, 'TRUE', 'FALSE' ) AS Result;

Voici l'ensemble des résultats.

Result
--------
TRUE

(1 row(s) affected)

B.IIF avec des constantes NULL

SELECT IIF ( 45 > 30, NULL, NULL ) AS Result;

Le résultat de cette instruction est une erreur.

C.IIF avec des paramètres NULL

DECLARE @P INT = NULL;
DECLARE @S INT = NULL;
SELECT IIF ( 45 > 30, @p, @s ) AS Result;

Voici l'ensemble des résultats.

Result
--------
NULL

(1 row(s) affected)

Voir aussi

Référence

CASE (Transact-SQL)