Instruction conditionnelle IF…ELSE dans SQL Server : Exemple de requête SELECT en T-SQL
⚡ Résumé intelligent
IF…ELSE est une instruction de contrôle de flux dans SQL Server qui exécute un bloc de T-SQL lorsqu'une condition booléenne est évaluée à vrai, et un bloc alternatif facultatif lorsque la même condition est évaluée à faux.

Pourquoi avez-vous besoin d’instructions conditionnelles ?
Les instructions conditionnelles de SQL Server permettent de définir différentes logiques et actions selon les conditions. Elles permettent d'effectuer différentes actions en fonction des conditions définies dans l'instruction. Dans la pratique, de nombreuses actions dépendent du résultat d'une autre activité ou situation.
Voici quelques exemples concrets d'instructions conditionnelles :
- S'il pleut demain, je prévois un voyage en voiture.
- Si les billets d'avion coûtent moins de 400 dollars au départ de ma ville, j'irai en vacances en Europe ; sinon, je préférerai un lieu touristique à proximité.
Ici, vous pouvez constater qu'une action, comme le voyage en voiture mentionné plus haut, dépend conditionnellement du résultat d'une autre activité, à savoir « s'il pleuvra ou non demain ». De même, MS SQL Server Il offre également la possibilité d'exécuter une instruction T-SQL de manière conditionnelle.
Instruction IF…ELSE dans SQL Server
Dans MS SQL, IF…ELSE est un type d'instruction conditionnelle. Toute instruction T-SQL peut être exécutée de manière conditionnelle à l'aide de IF…ELSE. La figure ci-dessous explique le fonctionnement des branches IF et ELSE dans SQL Server :
- Si la condition est évaluée à Vrai, alors les instructions T-SQL qui suivent la condition IF dans SQL Server sont exécutées.
- Si la condition est évaluée à Faux, alors les instructions T-SQL qui suivent le mot-clé ELSE sont exécutées.
- Une fois que l'une des instructions T-SQL IF ou l'instruction T-SQL ELSE est exécutée, les autres instructions T-SQL inconditionnelles continuent de s'exécuter.
Syntaxe et règles IF…ELSE en SQL
syntaxe:
IF <Condition> {Statement | Block_of_statement} [ ELSE {Statement | Block_of_statement}]
Règles :
- La condition doit être une expression booléenne, c'est-à-dire que la condition doit renvoyer une valeur booléenne lorsqu'elle est évaluée.
- Une instruction IF…ELSE en SQL peut gérer conditionnellement une seule instruction T-SQL ou un bloc d'instructions T-SQL.
- Un bloc d'instructions doit commencer par le mot-clé BEGIN et se terminer par le mot-clé END.
- L'utilisation de BEGIN et END aide SQL Server à identifier le bloc d'instructions qui doit être exécuté et à le séparer du reste des instructions T-SQL qui ne font pas partie du bloc T-SQL IF…ELSE.
- ELSE est facultatif.
IF…ELSE avec uniquement une valeur numérique dans une expression booléenne
Dans ce premier exemple, l'expression booléenne n'utilise que des valeurs numériques. Prenons l'exemple de la condition ci-dessous, qui est toujours vraie car 1 est égal à 1.
Condition : VRAI
IF (1=1) PRINT 'IF STATEMENT: CONDITION IS TRUE' ELSE PRINT 'ELSE STATEMENT: CONDITION IS FALSE'
L'exécution de la requête avec la condition vraie (1=1) affiche le message de la branche IF :
Condition : FAUX
IF (1=2) PRINT 'IF STATEMENT: CONDITION IS TRUE' ELSE PRINT 'ELSE STATEMENT: CONDITION IS FALSE'
Si la condition est fausse (1=2), la branche ELSE s'exécute à la place :
Supposons que vous ayez une table nommée 'Guru99' avec deux colonnes et quatre lignes, comme indiqué ci-dessous. Nous utiliserons ce 'GuruTableau 99 dans les exemples qui suivent.
IF…ELSE avec une variable dans une expression booléenne
Au lieu de nombres constants, l'expression booléenne peut comparer une valeur. variableL'exemple suivant déclare une variable entière et teste sa valeur.
Condition : VRAI
DECLARE @Course_ID INT = 4 IF (@Course_ID = 4) Select * from Guru99 where Tutorial_ID = 4 ELSE Select * from Guru99 where Tutorial_ID != 4
Étant donné que @Course_ID est égal à 4, la branche IF s'exécute et renvoie la ligne où Tutorial_ID est égal à 4 :
Condition : FAUX
DECLARE @Course_ID INT = 4 IF (@Course_ID != 4) Select * from Guru99 where Tutorial_ID = 4 ELSE Select * from Guru99 where Tutorial_ID != 4
Ici, la condition est fausse, donc la branche ELSE s'exécute et renvoie toutes les lignes où Tutorial_ID n'est pas égal à 4 :
SI…SINON avec DÉBUT…FIN
Lorsqu'une branche doit exécuter plusieurs instructions, placez-les dans un bloc BEGIN…END. L'exemple ci-dessous exécute deux instructions SELECT dans chaque branche.
Condition : VRAI
DECLARE @Course_ID INT = 2 IF (@Course_ID <=2) BEGIN Select * from Guru99 where Tutorial_ID = 1 Select * from Guru99 where Tutorial_ID = 2 END ELSE BEGIN Select * from Guru99 where Tutorial_ID = 3 Select * from Guru99 where Tutorial_ID = 4 END
Étant donné que @Course_ID est inférieur ou égal à 2, le bloc IF exécute les deux instructions SELECT à l'intérieur de BEGIN…END :
Condition : FAUX
DECLARE @Course_ID INT = 2 IF (@Course_ID >=3) BEGIN Select * from Guru99 where Tutorial_ID = 1 Select * from Guru99 where Tutorial_ID = 2 END ELSE BEGIN Select * from Guru99 where Tutorial_ID = 3 Select * from Guru99 where Tutorial_ID = 4 END
Cette fois, la condition est fausse, donc le bloc ELSE exécute ses deux instructions SELECT :
Instruction IF sans ELSE
Vous pouvez utiliser une instruction IF en SQL sans clause ELSE, car cette dernière est facultative. Par exemple :
DECLARE @Course_ID INT = 2 IF (@Course_ID <=2) Select * from Guru99 where Tutorial_ID = 1
Il imprime la ligne unique suivante :
L'exécution de la condition fausse ne produit aucun résultat. Prenons l'exemple de la requête suivante :
DECLARE @Course_ID INT = 2 IF (@Course_ID <=0) Select * from Guru99 where Tutorial_ID = 1
Le résultat est vide, comme indiqué ci-dessous :
Instructions IF…ELSE imbriquées
Contrairement à certains autres langages de programmationSQL Server ne propose pas d'instruction ELSE IF à l'intérieur d'une condition IF…ELSE. En revanche, vous pouvez imbriquer une condition IF…ELSE dans une autre, comme illustré ci-dessous :
DECLARE @age INT; SET @age = 60; IF @age < 18 PRINT 'underage'; ELSE BEGIN IF @age < 50 PRINT 'You are below 50'; ELSE PRINT 'Senior'; END;
Pour un âge de 60 ans, la structure IF…ELSE imbriquée affiche le résultat suivant :
- Le code affiche « mineur » si la valeur de @age est inférieure à 18.
- Sinon, la partie ELSE est exécutée. La partie ELSE contient une structure IF…ELSE imbriquée.
- Si la valeur de @age est inférieure à 50, le message « Vous avez moins de 50 ans » s'affiche. Sinon, le message « Senior » s'affiche.











