Partilhar via


ELSE (SE... ELSE) (Transact-SQL)

Aplica-se a:SQL ServerBase de Dados SQL do AzureInstância Gerida do Azure SQLAzure Synapse AnalyticsSistema de Plataforma de Análise (PDW)Ponto de Extremidade de Análise SQL no Microsoft FabricArmazém no Microsoft FabricBase de Dados SQL no Microsoft Fabric

Impõe condições à execução de uma declaração Transact-SQL. A instrução Transact-SQL (sql_statement) após o boolean_expression será executada se o boolean_expression avaliar como TRUE. A palavra-chave opcional ELSE é uma instrução Transact-SQL alternativa que é executada quando boolean_expression avalia como FALSE ou NULL.

Transact-SQL convenções de sintaxe

Syntax

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

Arguments

boolean_expression

Uma expressão que retorna TRUE ou FALSE. Se o boolean_expression contiver uma SELECT instrução, a SELECT declaração deve ser colocada entre parênteses.

{ sql_statement | statement_block }

Qualquer instrução Transact-SQL válida ou agrupamento de instruções, conforme definido com um bloco de instrução. Para definir um bloco de instrução (lote), use as palavras-chave BEGIN de linguagem de controle de fluxo e END. Embora todas as instruções Transact-SQL sejam válidas dentro de um BEGIN...END bloco, certas instruções Transact-SQL não devem ser agrupadas dentro do mesmo lote (bloco de instrução).

Tipos de devolução

Boolean

Examples

Os exemplos de código neste artigo usam o banco de dados de exemplo AdventureWorks2025 ou AdventureWorksDW2025, que pode ser descarregado da página inicial de Exemplos e Projetos da Comunidade do Microsoft SQL Server.

A. Usar uma expressão booleana

O exemplo a seguir tem uma expressão booleana (1 = 1) que é verdadeira e, portanto, imprime a primeira instrução.

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

O exemplo a seguir tem uma expressão booleana (1 = 2) que é falsa e, portanto, imprime a segunda instrução.

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

B. Usar uma consulta como parte de uma expressão booleana

O exemplo a seguir executa uma consulta como parte da expressão booleana. Como há 10 bicicletas na Product tabela que atendem à condição da WHERE cláusula, a primeira instrução de impressão é executada. Você pode alterar > 5 para > 15, para ver como a segunda parte da instrução pode ser executada.

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. Usar um bloco de instrução

O exemplo a seguir executa uma consulta como parte da expressão booleana e, em seguida, executa blocos de instrução ligeiramente diferentes com base no resultado da expressão booleana. Cada bloco de instrução começa com BEGIN e termina com 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. Usar se aninhado... Declarações ELSE

O exemplo a seguir mostra como uma IF...ELSE instrução pode ser aninhada dentro de outra. Defina a @Number variável como 5, 50e 500, para testar cada instrução.

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

Exemplos: Azure Synapse Analytics and Analytics Platform System (PDW)

E: Usando uma consulta como parte de uma expressão booleana

O exemplo a seguir usa IF...ELSE para determinar qual das duas respostas mostrar ao usuário, com base no peso de um item na DimProduct tabela no AdventureWorksDW2012 banco de dados.

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