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 Warehouse en Microsoft Fabric Base de datos SQL de 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 puede 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 5
en , 50
y 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