Share via


IF...ELSE (Transact-SQL)

適用於:SQL ServerAzure SQL 資料庫Azure SQL 受控執行個體Azure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric 中的 SQL 分析端點Microsoft Fabric 中的倉儲

在 Transact-SQL 陳述式的執行上強制加上條件。 如果符合條件,則會執行後面 IF 關鍵詞及其條件的 Transact-SQL 語句:布爾運算式會傳 TRUE回 。 選擇性 ELSE 關鍵字引進了另一個在不符合條件時 IF 執行的 Transact-SQL 語句:布爾運算式會傳 FALSE回 。

Transact-SQL 語法慣例

Syntax

IF boolean_expression
    { sql_statement | statement_block }
[ ELSE
    { sql_statement | statement_block } ]

注意

若要檢視 SQL Server 2014 (12.x) 和舊版的 Transact-SQL 語法,請參閱 舊版檔

引數

boolean_expression

傳回 或FALSETRUE表達式。 如果布爾表達式包含 SELECT 語句, SELECT 語句必須以括弧括住。

{ sql_statement | statement_block }

使用語句區塊所定義的任何 Transact-SQL 語句或語句群組。 除非使用語句區塊, IF 否則 或 ELSE 條件只會影響一個 Transact-SQL 語句的效能。

若要定義語句區塊,請使用流程控制關鍵字 BEGINEND

備註

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;