Condividi tramite


ELSE (IF...ELSE) (Transact-SQL)

Si applica a: SQL Server database SQL di Azure Istanza gestita di SQL di Azure endpoint di analisi SQL di Azure Synapse Analytics Platform System (PDW) in Microsoft Fabric Warehouse nel database SQL di Microsoft Fabric in Microsoft Fabric

Impone le condizioni per l'esecuzione di un'istruzione Transact-SQL. L'istruzione Transact-SQL (sql_statement) che segue il boolean_expression viene eseguita se il boolean_expression restituisce TRUE. La parola chiave facoltativa ELSE è un'istruzione Transact-SQL alternativa che viene eseguita quando boolean_expression restituisce FALSE o NULL.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

IF boolean_expression
    { sql_statement | statement_block }
[ ELSE
    { sql_statement | statement_block } ]

Argomenti

boolean_expression

Espressione che restituisce TRUE o FALSE. Se il boolean_expression contiene un'istruzione SELECT , l'istruzione SELECT deve essere racchiusa tra parentesi.

{ sql_statement | statement_block }

Qualsiasi istruzione Transact-SQL valida o raggruppamento di istruzioni come definito con un blocco di istruzioni. Per definire un blocco di istruzioni (batch), usare le parole chiave BEGIN del linguaggio control-of-flow e END. Anche se tutte le istruzioni Transact-SQL sono valide all'interno di un BEGIN...END blocco, alcune istruzioni Transact-SQL non devono essere raggruppate all'interno dello stesso batch (blocco di istruzioni).

Tipi restituiti

Booleano

Esempi

Gli esempi di codice Transact-SQL in questo articolo utilizzano il database campione AdventureWorks2022 o AdventureWorksDW2022, che è possibile scaricare dalla home page di Esempi di Microsoft SQL Server e progetti collettivi.

R. Usare un'espressione booleana

Nell'esempio seguente è presente un'espressione booleana (1 = 1) che è true e, pertanto, stampa la prima istruzione.

IF 1 = 1 PRINT 'Boolean expression is true.'
ELSE PRINT 'Boolean expression is false.';

Nell'esempio seguente è presente un'espressione booleana (1 = 2) false e quindi stampa la seconda istruzione.

IF 1 = 2 PRINT 'Boolean expression is true.'
ELSE PRINT 'Boolean expression is false.';
GO

B. Usare una query come parte di un'espressione booleana

Nell'esempio seguente viene eseguita una query come parte dell'espressione booleana. Poiché nella tabella sono presenti 10 biciclette Product che soddisfano la condizione nella WHERE clausola , viene eseguita la prima istruzione print. È possibile passare > 5 a > 15per vedere come può essere eseguita la seconda parte dell'istruzione.

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. Usare un blocco di istruzioni

Nell'esempio seguente viene eseguita una query come parte dell'espressione booleana e successivamente vengono eseguiti blocchi di istruzioni leggermente diversi in base al risultato dell'espressione booleana. Ogni blocco di istruzioni inizia con BEGIN e termina con 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. Usa if annidato... Istruzioni ELSE

Nell'esempio seguente viene illustrato come un'istruzione IF...ELSE può essere annidata all'interno di un'altra. Impostare la @Number variabile su 5, 50e 500per testare ogni istruzione.

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

Esempi: Azure Synapse Analytics e Piattaforma di strumenti analitici (PDW)

B. Uso di una query come parte di un'espressione booleana

Nell'esempio seguente viene IF...ELSE usato per determinare quali di due risposte mostrare all'utente, in base al peso di un elemento nella DimProduct tabella del AdventureWorksDW2012 database.

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