Comparteix a través de


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

Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Punto de conexión de análisis SQL en Microsoft Fabric Almacenamiento en Microsoft Fabric

Impone condiciones en la ejecución de una instrucción Transact-SQL. La instrucción Transact-SQL (sql_statement) que sigue al boolean_expression se ejecuta si el boolean_expression se evalúa como TRUE. La palabra clave opcional ELSE es una instrucción transact-SQL alternativa que se ejecuta cuando boolean_expression se evalúa como FALSE o NULL.

Convenciones de sintaxis de Transact-SQL

Sintaxis

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

Argumentos

boolean_expression

Expresión que devuelve TRUE o FALSE. Si el boolean_expression contiene una SELECT instrucción , la SELECT instrucción debe incluirse entre paréntesis.

{ sql_statement | statement_block }

Cualquier instrucción o instrucción Transact-SQL válida agrupación de instrucciones tal como se define con un bloque de instrucciones. Para definir un bloque de instrucciones (lote), use las palabras clave BEGIN del lenguaje control de flujo y END. Aunque todas las instrucciones Transact-SQL son válidas dentro de un BEGIN...END bloque, algunas instrucciones Transact-SQL no deben agruparse dentro del mismo lote (bloque de instrucciones).

Tipos de valores devueltos

Boolean

Ejemplos

Los ejemplos de código de Transact-SQL de este artículo utilizan la base de datos de ejemplo AdventureWorks2022 o AdventureWorksDW2022, que se pueden descargar desde la página principal de Ejemplos y proyectos de la comunidad de Microsoft SQL Server.

A Uso de una expresión booleana

El ejemplo siguiente tiene una expresión booleana (1 = 1) que es true y, por lo tanto, imprime la primera instrucción.

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

El ejemplo siguiente tiene una expresión booleana (1 = 2) que es false y, por tanto, imprime la segunda instrucción.

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

B. Usar una consulta como parte de una expresión booleana

En el ejemplo siguiente se ejecuta una consulta en la expresión booleana. Dado que hay 10 bicicletas en la Product tabla que cumplen la condición en la WHERE cláusula , se ejecuta la primera instrucción print. Puede cambiar > 5 a > 15, para ver cómo se puede ejecutar la segunda parte de la instrucción.

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. Uso de un bloque de instrucciones

En el ejemplo siguiente se ejecuta una consulta en la expresión booleana y, a continuación, se ejecutan bloques de instrucciones con pequeñas diferencias que dependen del resultado de la expresión booleana. Cada bloque de instrucciones comienza con BEGIN y finaliza 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. Usar IF anidado... Instrucciones ELSE

En el ejemplo siguiente se muestra cómo se puede anidar una IF...ELSE instrucción dentro de otra. Establezca la @Number variable 5en , 50y 500, para probar cada instrucción.

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

Ejemplos: Azure Synapse Analytics y Sistema de la plataforma de análisis (PDW)

E. Usar una consulta como parte de una expresión booleana

En el ejemplo siguiente se usa IF...ELSE para determinar cuál de las dos respuestas para mostrar al usuario, en función del peso de un elemento de la DimProduct tabla de la AdventureWorksDW2012 base de datos.

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