适用于:
SQL Server
Azure SQL 数据库
Azure SQL 托管实例
Azure Synapse Analytics
Analytics Platform System (PDW)
指定 Transact-SQL 语句的执行条件。 如果满足条件,则在 IF 关键字及其条件之后执行 Transact-SQL 语句:布尔表达式返回 TRUE。 可选的 ELSE 关键字引入另一个 Transact-SQL 语句,当不满足 IF 条件时就执行该语句:布尔表达式返回 FALSE。
Transact-SQL 语法约定
IF Boolean_expression
{ sql_statement | statement_block }
[ ELSE
{ sql_statement | statement_block } ]
若要查看 SQL Server 2014 及更早版本的 Transact-SQL 语法,请参阅早期版本文档。
Boolean_expression
返回 TRUE 或 FALSE 的表达式。 如果布尔表达式中含有 SELECT 语句,则必须用括号将 SELECT 语句括起来。
{ sql_statement| statement_block }
任何 Transact-SQL 语句或用语句块定义的语句分组。 除非使用语句块,否则 IF 或 ELSE 条件只能影响一个 Transact-SQL 语句的性能。
若要定义语句块,请使用控制流关键字 BEGIN 和 END。
IF...ELSE 构造可用于批处理、存储过程和即席查询。 当此构造用于存储过程时,通常用于测试某个参数是否存在。
可以在其他 IF 之后或在 ELSE 下面,嵌套另一个 IF 测试。 嵌套级数的限制取决于可用内存。
IF DATENAME(weekday, GETDATE()) IN (N'Saturday', N'Sunday')
SELECT 'Weekend';
SELECT 'Weekday';
有关详细信息,请参阅 ELSE (IF...ELSE) (Transact-SQL)。
示例:Azure Synapse Analytics 和 Analytics Platform System (PDW)
下面的示例使用 IF...ELSE
,根据 DimProduct
表中各项的权重来决定向用户显示两个响应中的哪一个响应。
-- Uses AdventureWorksDW
DECLARE @maxWeight FLOAT, @productKey INTEGER
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
SELECT @productKey AS ProductKey, EnglishDescription, Weight, 'This product is available for shipping or pickup.'
AS ShippingStatus
FROM DimProduct WHERE ProductKey = @productKey
BEGIN...END (Transact-SQL)
END (BEGIN...END) (Transact-SQL)
SELECT (Transact-SQL)
WHILE (Transact-SQL)
CASE (Transact-SQL)
Control-of-Flow Language (Transact-SQL)ELSE (IF...ELSE) (Transact-SQL)