Fonctions logiques – IIF (Transact-.SQL)

  • 03/14/2017
  • 2 minutes de lecture
    • c
    • k
    • r
    • P
    • i
    • +5

S’applique à : ouiSQL Server (toutes les versions prises en charge) ouiAzure SQL Database

Retourne l’une des deux valeurs, selon que l’expression booléenne évalue à true ou false dans SQL Server.

Icône de lien au sujet Conventions syntaxiques Transact-SQL

Syntaxe

IIF( boolean_expression, true_value, false_value )

Note

Pour consulter la syntaxe Transact-SQL de SQL Server 2014 et des versions antérieures, consultez la documentation des versions antérieures.

Arguments

expression booléenne
Une expression booléenne valide.

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

valeur_true
Valeur à retourner si l’expression booléenne évalue à true.

valeur_false
Valeur à retourner si l’expression booléenne évalue à false.

Types de retour

Retourne le type de données ayant la plus haute préséance parmi les types dans valeur_vraie et valeur_false. Pour plus d’informations, consultez la rubrique Prédominance des types de données (Transact-SQL).

Remarques

IIF est un moyen raccourci d’écrire une expression CASE. Elle évalue l’expression booléenne passée comme premier argument, puis renvoie l’un ou l’autre des deux autres arguments en fonction du résultat de l’évaluation. Autrement dit, la valeur true est renvoyée si l’expression booléenne est vraie, et la valeur false est renvoyée si l’expression booléenne est fausse ou 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, le traitement des nullités et les types de retour s’appliquent également à IIF. Pour plus d’informations, voir CASE (Transact-SQL).

Le fait que IIF soit traduit en CASE a également un impact sur d’autres aspects du comportement de cette fonction. Comme les expressions CASE ne peuvent être imbriquées que jusqu’au niveau 10, les instructions IIF ne peuvent également être imbriquées que jusqu’au niveau maximum de 10. De plus, IIF est remotorisé vers d’autres serveurs comme une expression CASE sémantiquement équivalente, avec tous les comportements d’une expression CASE remotorisée.

Exemples

A. Exemple d’IIF simple

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

Voici le jeu de résultats.

Result -------- TRUE 

B. IIF avec constantes NULL

SELECT = IIF( 45 > 30, NULL, NULL );

Le résultat de cette instruction est une erreur.

C. IIF avec paramètres NULL

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

Voici le jeu de résultats.

Result -------- NULL 

See Also

CASE (Transact-SQL)
CHOOSE (Transact-SQL)

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *