IF...ELSE (Transact-SQL)
适用于: SQL Server Azure SQL 数据库 Azure SQL 托管实例 Azure Synapse Analytics 分析平台系统 (PDW) Microsoft Fabric 中的 SQL 分析端点 Microsoft Fabric 中的仓库
指定 Transact-SQL 语句的执行条件。 如果满足条件,则执行后跟 IF
关键字及其条件的 Transact-SQL 语句:布尔表达式返回 TRUE
。 可选 ELSE
关键字引入了另一个 Transact-SQL 语句,该 IF
语句在条件不满足时执行:布尔表达式返回 FALSE
。
语法
IF boolean_expression
{ sql_statement | statement_block }
[ ELSE
{ sql_statement | statement_block } ]
参数
boolean_expression
返回 TRUE
或 FALSE
. 如果布尔表达式包含语句 SELECT
,则必须将 SELECT
语句括在括号中。
{ sql_statement | statement_block }
使用语句块定义的任何 Transact-SQL 语句或语句分组。 除非使用了语句块, IF
否则或 ELSE
条件只能影响一个 Transact-SQL 语句的性能。
若要定义语句块,请使用流控制关键字 BEGIN
和 END
。
注解
IF...ELSE
可以在批处理、存储过程和即席查询中使用构造。 在存储过程中使用此构造时,通常会测试是否存在某些参数。
IF
测试可以嵌套在另一个 IF
或之后 ELSE
。 嵌套级数的限制取决于可用内存。
示例
IF DATENAME(weekday, GETDATE()) IN (N'Saturday', N'Sunday')
SELECT 'Weekend';
ELSE
SELECT 'Weekday';
有关更多示例,请参阅 ELSE (IF...ELSE)。
示例:Azure Synapse Analytics 和 Analytics Platform System (PDW)
下面的示例使用 IF...ELSE
,根据 DimProduct
表中各项的权重来决定向用户显示两个响应中的哪一个响应。
-- Uses AdventureWorksDW
DECLARE @maxWeight FLOAT, @productKey INT;
SET @maxWeight = 100.00;
SET @productKey = 424;
IF @maxWeight <= (
SELECT Weight
FROM DimProduct
WHERE ProductKey = @productKey
)
SELECT @productKey AS ProductKey,
EnglishDescription,
Weight,
'This product is too heavy to ship and is only available for pickup.' AS ShippingStatus
FROM DimProduct
WHERE ProductKey = @productKey;
ELSE
SELECT @productKey AS ProductKey,
EnglishDescription,
Weight,
'This product is available for shipping or pickup.' AS ShippingStatus
FROM DimProduct
WHERE ProductKey = @productKey;