適用於:SQL Server
Azure SQL 資料庫
Azure SQL 受控執行個體
Azure Synapse Analytics
分析平台系統(PDW)
Microsoft Fabric 中的 SQL 分析端點
Microsoft Fabric 中的倉儲
Microsoft Fabric 中的 SQL 資料庫
在 Transact-SQL 陳述式的執行上強制加上條件。 如果符合條件,則會執行後面 IF 關鍵詞及其條件的 Transact-SQL 語句:布爾運算式會傳 TRUE回 。 選擇性 ELSE 關鍵字引進了另一個在不符合條件時 IF 執行的 Transact-SQL 語句:布爾運算式會傳 FALSE回 。
Syntax
IF boolean_expression
{ sql_statement | statement_block }
[ ELSE
{ sql_statement | statement_block } ]
Arguments
boolean_expression
傳回 或TRUE的FALSE表達式。 如果布爾表達式包含 SELECT 語句, SELECT 語句必須以括弧括住。
{ sql_statement | statement_block }
使用語句區塊所定義的任何 Transact-SQL 語句或語句群組。 除非使用語句區塊, IF 否則 或 ELSE 條件只會影響一個 Transact-SQL 語句的效能。
若要定義語句區塊,請使用流程控制關鍵字 BEGIN 和 END。
Remarks
IF...ELSE建構可以用於批次、預存程式和臨機操作查詢中。 當這個建構用於預存程式中時,通常會測試某些參數是否存在。
IF 測試可以巢狀於另一個 IF 或之後 ELSE。 巢狀層級數目的限制,會隨著可用的記憶體而不同。
Examples
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;