IF...ELSE (Transact-SQL)
適用於:Microsoft Fabric 中 Microsoft Fabric倉儲中的 SQL ServerAzure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse AnalyticsAnalytics Platform System (PDW)SQL 分析端點
在 Transact-SQL 陳述式的執行上強制加上條件。 如果 IF 關鍵字的條件獲得滿足,就會執行在 IF 關鍵字及其條件之後的 Transact-SQL 陳述式:布林運算式會傳回 TRUE。 選擇性的 ELSE 關鍵字導入了另一個在 IF 條件未獲滿足時所執行的 Transact-SQL 陳述式:布林運算式會傳回 FALSE。
Syntax
IF Boolean_expression
{ sql_statement | statement_block }
[ ELSE
{ sql_statement | statement_block } ]
注意
若要檢視 SQL Server 2014 (12.x) 和舊版的 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';
ELSE
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
ELSE
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)
Flow 控制語言 (Transact-SQL) ELSE (IF...ELSE) (Transact-SQL)
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應