SQL Server 2012 a introduit une nouvelle fonction logique intégrée SQL IIF. C’est une forme abrégée d’écriture de la logique D’instruction de cas ou de la logique IF-ELSE.

Nous avons exploré L’instruction Case en SQL dans mon article précédent. Nous utilisons une instruction case pour renvoyer un résultat basé sur la condition définie. Il est similaire à un IF..ELSE THEN THEN statement évalue une expression et renvoie la sortie. L’instruction case est disponible dans presque toutes les versions de SQL Server.

explorons cette fonction SQL IIF dans cet article.,

aperçu de L’instruction SQL IIF

Nous utilisons le format suivant pour écrire la logique de L’instruction Case dans les requêtes SQL

sélectionnez CASE Expression When expression1 Then Result1 When expression2 Then Result2 ELSE ELSE Result END

Nous pouvons écrire ce code en utilisant la syntaxe

IIF(boolean_expression, true_value, false_value)

  • Boolean_expression: le premier paramètre de L’instruction SQL IIF est une expression booléenne., Ce devrait être une expression booléenne valide sinon nous obtenons une exception
  • True_Value: si la boolean_expression est TRUE, elle renvoie la valeur spécifiée dans le paramètre true_value
  • False_Value: si la boolean_expression est FALSE, elle renvoie la valeur spécifiée dans le paramètre false_value

explorons L’instruction SQL IIF à l’aide d’exemples.

exemple 1: instruction SQL IIF pour comparer des valeurs entières

dans l’exemple suivant, l’expression booléenne spécifiée renvoie False ( 2>3 n’est pas TRUE)., Due to this, it returns the value specified in the false_value parameter.

1
SELECT IIF(2 > 3, ‘TRUE’, ‘FALSE’ )

Similarly, if the condition is TRUE (5>3 is TRUE) so it returns the value of true_value parameter.,

1
SELECT IIF(5 > 3, ‘TRUE’, ‘FALSE’ )

Example 2: SQL IIF statement with variables

In the following example, we specified two integer variables and assigned values. We use variables for comparison in the IIF statement.,

1
2

DECLARE @A INT = 80, @B INT = 70
SELECT IIF(@A >= @B, ‘PASS’, ‘FAIL’ )

The specified condition (80>70) is TRUE, so it returns the value PASS.,

exemple 3: instruction SQL IIF pour comparer deux chaînes

dans l’exemple suivant, nous voulons comparer les données de chaîne à l’aide de L’instruction SQL IIF. Nous voulons connaître la personne qui aime en fonction du nom de la personne.,

1
2

DECLARE @Person Varchar(100) = ‘Raj’
SELECT IIF(@Person=’Raj’,’Likes Apple’,’NA’)

We can specify multiple conditions in SQL IIF statement as well.,i>

  • Else all other persons like orange
  • 1
    2

    DECLARE @Person Varchar(100) = ‘Raj’
    SELECT IIF(@Person in(‘Raj’, ‘Mohan’),’Likes Apple’,’Likes Orange’)

    The query should return Likes Orange if the person name is not in the IN clause., Dans l’exemple suivant, personne Vinay n’existe pas dans la variable @Personne, elle retourne la valeur d’un faux clause.

    exemple 4: instruction SQL IIF imbriquée

    Nous pouvons également utiliser une instruction SQL IIF imbriquée pour spécifier plusieurs conditions

    dans cette fonction SQL IIF, elle vérifie la première condition et si la condition est vraie, elle renvoie la valeur. Dans notre cas, il est faux ( Person Vinay ne correspond pas à Raj).il vérifie l’autre condition et renvoie des résultats s’il est vrai.,

    Si aucune de ces conditions n’est vraie, elle renvoie la valeur par défaut false message.

    Exemple 5: SQL instruction IIF avec une colonne de table

    Dans les exemples précédents, nous spécifier les valeurs directement dans l’instruction IIF ou spécifié variables. Généralement, nous voulons l’utiliser avec les données existantes dans une table SQL. Nous pouvons également utiliser L’instruction IIF avec une colonne de table.,

    dans l’exemple suivant, nous voulons connaître le nom du fournisseur à partir de la table PurchaseOrders de la base de données WideWorldImporters.

    Si le nom du fournisseur n’existe pas pour un ID de fournisseur particulier, il renvoie la valeur false spécifiée dans L’instruction SQL IIF.

    exemple 6: instruction SQL IIF avec une colonne de table et une fonction d’agrégation

    exemple 7: instruction SQL IIF et priorité de type de données

    Nous pourrions avoir différents types de données pour les résultats., Si nous avons différents types de données spécifiés dans les conditions de résultat, SQL Server donne le type de données de priorité le plus élevé. Dans l’exemple suivant, pour la condition false(11>19), le résultat sera l’argument false_value, c’est-à-dire 100. Il devrait être de type de données e integer, mais nous obtenons la sortie 40.0 car l’autre argument float (2.6) a une priorité élevée par rapport à un entier.,

    1
    SELECT IIF(11 > 19, 2.6, 40)

    You can check the data type precedence in the following image

    Example 8: SQL IIF with NULL values

    We should be careful in NULL values inside the SQL IIF function.,

    1
    2
    3

    SELECT
    IIF(100 > 99, NULL, NULL) AS Result;

    We cannot specify NULL in both the true and false arguments. We get the following error message.,

    Msg 8133, niveau 16, état 1, Ligne 1 au moins une des expressions de résultat dans une spécification de cas doit être une expression autre que la constante NULL.

    dans le message d’erreur, vous pouvez voir qu’il donne des informations sur la spécification de cas, mais nous avons utilisé la fonction SQL IIF. Nous allons regarder cela dans l’exemple suivant.

    Vous devez spécifier au moins l’un des arguments true ou false.,

    1
    2

    SELECT
    IIF(100 > 99, ‘Hello’, NULL) AS Result;

    The similarity between SQL IIF statement and CASE Statement

    In the introduction of SQL IIF Statement, we mentioned that it is a shorthand form of writing CASE statement logic or IF-ELSE logic., Oui, c’est vrai. En interne, SQL Server convertit l’instruction En instruction CASE et s’exécute. Nous pouvons le vérifier en utilisant le plan d’exécution d’une requête.

    exécutez la requête de L’exemple 6 avec un plan D’exécution réel.

    Dans le plan d’exécution, examinez les propriétés de Calcul Scalaire. Vous pouvez voir qu’il exécute l’instruction CASE en interne.

    Conclusion

    dans cet article, nous avons exploré L’instruction SQL IIF qui est une nouvelle façon d’écrire des conditions liées aux instructions de cas., Il est disponible à partir de SQL 2012. Vous devriez explorer cela pour vous familiariser avec cela. Si vous avez des commentaires ou des questions, n’hésitez pas à les laisser dans les commentaires ci-dessous.,

    • auteur
    • messages récents

    en tant que formateur certifié MCSA et Microsoft à Gurgaon, en Inde, avec 13 ans d’expérience, Rajendra travaille pour une variété de grandes entreprises en se concentrant sur l’optimisation des performances, la surveillance, la haute disponibilité et les stratégies de reprise après sinistre et la mise en œuvre., Il est l’auteur de centaines d’articles faisant autorité sur SQL Server, Azure, MySQL, Linux, Power BI, Performance tuning, AWS/Amazon RDS, Git et les technologies connexes qui ont été consultés par Plus de 10 millions de lecteurs à ce jour.
    Il est le créateur de l’une des plus grandes collections en ligne gratuites d’articles sur un seul sujet, avec sa série de 50 parties sur SQL Server toujours sur les groupes de disponibilité. Sur la base de sa contribution à la communauté SQL Server, il a été reconnu par divers prix, y compris le prestigieux « meilleur auteur de l’année » en continu en 2020 et 2021 à SQLShack.,
    Raj est toujours intéressé par les nouveaux défis, donc si vous avez besoin d’aide de consultation sur un sujet couvert dans ses écrits, il peut être joint à rajendra.gupta16 @ gmail.,com
    voir tous les messages de Rajendra Gupta

    derniers messages de Rajendra Gupta (voir tout)
    • effectuer des mises à niveau mineures et majeures pour AWS RDS SQL Server – Janvier 29, 2021
    • déploiement d’instances PostgreSQL AWS RDS – 27 janvier 2021
    • migration de vos bases de données SQL sur site vers AWS RDS SQL Server à l’aide d’AWS DMS-25 janvier 2021

    Laisser un commentaire

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