Les étudiants qui apprennent un nouveau langage de programmation commenceront souvent leur première leçon avec un IF
instruction, où leur instruction renverra une valeur uniquement si l'expression est vraie.
Ils peuvent ensuite évoluer vers un IF... ELSE
, où ils peuvent déterminer une autre valeur à renvoyer si l'expression est fausse. Par conséquent, renvoyez une valeur si l'expression est vraie et une autre valeur si elle est fausse.
SQL Server inclut certainement le IF... ELSE
déclaration dans sa boîte à outils T-SQL.
SQL Server inclut également le IIF()
fonction, qui fait une chose similaire, mais avec une syntaxe plus concise.
Mais il y a quelques différences subtiles.
Les différences
Le tableau suivant présente les principales différences entre le IF
déclaration et le IIF()
fonction.
IF | IIF() | |
---|---|---|
Type | Instruction de contrôle de flux. | Fonction logique. |
Comment le résultat est-il déterminé ? | Vous spécifiez une instruction SQL ou un bloc d'instructions à exécuter. | Vous spécifiez la valeur réelle à renvoyer. |
Imbrication ? | La limite du nombre de niveaux imbriqués dépend de la mémoire disponible. | Ne peut être imbriqué que jusqu'au niveau maximum de 10. |
Et si l'expression renvoie false ? | Le ELSE mot-clé est facultatif (c'est-à-dire que vous pouvez choisir de répondre ou non aux faux résultats). | Nécessite à la fois une valeur vraie et une valeur fausse (c'est-à-dire que vous devez tenir compte des faux résultats). |
Le IIF()
la fonction est en fait un raccourci pour écrire un CASE
expression. Il partage donc les mêmes limitations que le CASE
expression, qui sont différents du IF
déclaration.
L'instruction IF
Voici un IF
déclaration.
IF 1 < 2 SELECT 'True';
Résultat :
True
Dans ce cas, l'expression à évaluer est 1 < 2
. Il est vrai que 1 est inférieur à 2 donc le SELECT
instruction a été exécutée et True
a été renvoyé.
Cependant, si l'expression est fausse, rien ne se passera.
IF 1 > 2 SELECT 'True';
Résultat :
Commands completed successfully.
Tout ce que SQL Server m'a dit, c'est que la commande s'est terminée avec succès. Rien d'autre n'a été renvoyé, car rien d'autre n'a été spécifié.
L'instruction SI… SINON
Dans ce cas, nous pouvons ajouter l'optionnel ELSE
au IF
déclaration, de sorte qu'il devient un IF... ELSE
déclaration.
IF 1 > 2
SELECT 'True';
ELSE
SELECT 'False';
Résultat :
False
Maintenant, nous obtenons également un résultat lorsque l'expression est fausse.
La fonction IIF()
Le IIF()
La fonction nous permet d'écrire la même logique en utilisant une syntaxe plus concise.
Nous pourrions donc réécrire l'exemple précédent comme suit :
SELECT IIF( 1 > 2, 'True', 'False' );
Résultat :
False
Le IIF()
La fonction est fondamentalement une manière plus concise de faire le IF... ELSE
déclaration.
En fait, ce n'est que partiellement vrai. Comme mentionné, le IIF()
la fonction est basée sur le CASE
expression, et a donc les mêmes limitations que le CASE
expression (par exemple, ne pouvoir s'imbriquer qu'à un niveau maximum de 10).
Par conséquent, la déclaration précédente est l'équivalent de la suivante.
SELECT
CASE WHEN 1 > 2 THEN 'True'
ELSE 'False'
END;
Résultat :
False
Notez que IIF()
nécessite deux arguments, et par conséquent, vous devez spécifier une valeur à renvoyer si l'expression est fausse (même si vous spécifiez NULL
ou une chaîne vide).