Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:SQL Server
Azure SQL Database
Instancia administrada de Azure SQL
Azure Synapse Analytics
Analytics Platform System (PDW)
Punto de conexión de SQL Analytics en Microsoft Fabric
Almacén en Microsoft Fabric
Base de datos SQL 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
Syntax
IF boolean_expression
{ sql_statement | statement_block }
[ ELSE
{ sql_statement | statement_block } ]
Arguments
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 retorno
Boolean
Examples
Los ejemplos de código de este artículo usan la base de datos de ejemplo de AdventureWorks2025 o AdventureWorksDW2025, que puede descargar de la página principal de Ejemplos de Microsoft SQL Server y proyectos de comunidad.
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