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, 50et 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