ELSE (IF...ELSE) (Transact-SQL)
S’applique à : SQL Server Base de données Azure SQL Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Point de terminaison d'analyse SQL dans Microsoft Fabric Entrepôt dans Microsoft Fabric Base de données SQL dans Microsoft Fabric
Impose les conditions d'exécution d'une instruction Transact-SQL. L’instruction Transact-SQL (sql_statement) qui suit l’boolean_expression est exécutée si le boolean_expression est évalué à TRUE
. Le mot clé facultatif ELSE
est une autre instruction Transact-SQL exécutée lorsque boolean_expression prend FALSE
la valeur ou NULL
.
Conventions de la syntaxe Transact-SQL
Syntaxe
IF boolean_expression
{ sql_statement | statement_block }
[ ELSE
{ sql_statement | statement_block } ]
Arguments
boolean_expression
Expression qui renvoie TRUE
ou FALSE
. Si le boolean_expression contient une SELECT
instruction, l’instruction SELECT
doit être placée entre parenthèses.
{ sql_statement | statement_block }
Toute instruction Transact-SQL valide ou regroupement d’instructions tel que défini avec un bloc d’instructions. Pour définir un bloc d’instructions (lot), utilisez les mots clés BEGIN
du langage de contrôle de flux et END
. Bien que toutes les instructions Transact-SQL soient valides dans un BEGIN...END
bloc, certaines instructions Transact-SQL ne doivent pas être regroupées dans le même lot (bloc d’instructions).
Types de retour
Booléen
Exemples
Les exemples de code Transact-SQL de cet article sont fondés sur l’échantillon de base de données AdventureWorks2022
ou AdventureWorksDW2022
fourni, que vous pouvez télécharger à partir de la page d’accueil Échantillons et projets communautaires Microsoft SQL Server.
R : Utiliser une expression booléenne
L’exemple suivant a une expression booléenne (1 = 1
) qui est vraie et imprime par conséquent la première instruction.
IF 1 = 1 PRINT 'Boolean expression is true.'
ELSE PRINT 'Boolean expression is false.';
L’exemple suivant a une expression booléenne (1 = 2
) qui est false, et imprime donc la deuxième instruction.
IF 1 = 2 PRINT 'Boolean expression is true.'
ELSE PRINT 'Boolean expression is false.';
GO
B. Utiliser une requête dans le cadre d’une expression booléenne
L'exemple suivant exécute une requête dans le cadre de l'expression booléenne. Étant donné qu’il existe 10 vélos dans le Product
tableau qui répondent à la condition dans la WHERE
clause, la première instruction d’impression s’exécute. Vous pouvez passer > 5
à > 15
, pour voir comment la deuxième partie de l’instruction peut s’exécuter.
USE AdventureWorks2022;
GO
IF (SELECT COUNT(*)
FROM Production.Product
WHERE Name LIKE 'Touring-3000%'
) > 5
PRINT 'There are more than 5 Touring-3000 bicycles.'
ELSE
PRINT 'There are 5 or less Touring-3000 bicycles.';
GO
C. Utiliser un bloc d’instructions
L'exemple suivant exécute une requête dans le cadre de l'expression booléenne, puis exécute des blocs d'instructions légèrement différents selon le résultat de l'expression booléenne. Chaque bloc d'instructions commence par BEGIN
et se termine par END
.
USE AdventureWorks2022;
GO
DECLARE @AvgWeight DECIMAL(8, 2),
@BikeCount INT
IF (
SELECT COUNT(*)
FROM Production.Product
WHERE Name LIKE 'Touring-3000%'
) > 5
BEGIN
SET @BikeCount = (
SELECT COUNT(*)
FROM Production.Product
WHERE Name LIKE 'Touring-3000%'
);
SET @AvgWeight = (
SELECT AVG(Weight)
FROM Production.Product
WHERE Name LIKE 'Touring-3000%'
);
PRINT 'There are ' + CAST(@BikeCount AS VARCHAR(3)) + ' Touring-3000 bikes.'
PRINT 'The average weight of the top 5 Touring-3000 bikes is ' + CAST(@AvgWeight AS VARCHAR(8)) + '.';
END
ELSE
BEGIN
SET @AvgWeight = (
SELECT AVG(Weight)
FROM Production.Product
WHERE Name LIKE 'Touring-3000%'
);
PRINT 'Average weight of the Touring-3000 bikes is ' + CAST(@AvgWeight AS VARCHAR(8)) + '.';
END;
GO
D. Utiliser l’if imbriqué... Instructions ELSE
L’exemple suivant montre comment une IF...ELSE
instruction peut être imbriquée à l’intérieur d’une autre. Définissez la @Number
variable sur 5
, 50
et 500
, pour tester chaque instruction.
DECLARE @Number INT;
SET @Number = 50;
IF @Number > 100
PRINT 'The number is large.';
ELSE
BEGIN
IF @Number < 10
PRINT 'The number is small.';
ELSE
PRINT 'The number is medium.';
END;
GO
Exemples : Azure Synapse Analytics et Analytics Platform System (PDW)
E. Utilisation d’une requête dans le cadre d’une expression booléenne
L’exemple suivant utilise IF...ELSE
pour déterminer lequel de deux réponses pour afficher l’utilisateur, en fonction du poids d’un élément dans la table de la DimProduct
AdventureWorksDW2012
base de données.
DECLARE @maxWeight FLOAT, @productKey INT;
SET @maxWeight = 100.00;
SET @productKey = 424;
IF @maxWeight <= (
SELECT [Weight]
FROM DimProduct
WHERE ProductKey = @productKey;
)
BEGIN
SELECT @productKey,
EnglishDescription,
[Weight],
'This product is too heavy to ship and is only available for pickup.'
FROM DimProduct
WHERE ProductKey = @productKey;
END
ELSE
BEGIN
SELECT @productKey,
EnglishDescription,
[Weight],
'This product is available for shipping or pickup.'
FROM DimProduct
WHERE ProductKey = @productKey;
END