Share via


IF...ELSE (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Microsoft Fabric の SQL 分析エンドポイントMicrosoft Fabric のウェアハウス

Transact-SQL ステートメントを実行する条件を設定します。 条件が満たされた場合、キーワード (keyword)とその条件に続く IF Transact-SQL ステートメントが実行されます。ブール式が返しますTRUE。 省略可能なELSEキーワード (keyword)では、条件が満たされていない場合IFに実行される別の Transact-SQL ステートメントが導入されます。ブール式が返しますFALSE

Transact-SQL 構文表記規則

構文

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

Note

SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

引数

boolean_expression

を返すTRUE式。FALSE ブール式にステートメントが SELECT 含まれている場合は、ステートメントを SELECT かっこで囲む必要があります。

{ sql_statement | statement_block }

ステートメント ブロックを使用して定義された Transact-SQL ステートメントまたはステートメント グループ。 ステートメント ブロックを使用しない限り、 IFELSE 1 つの Transact-SQL ステートメントのパフォーマンスに影響を与える可能性があります。

ステートメント ブロックを定義するには、フロー制御キーワード (keyword)と BEGINEND.

解説

コンストラクトは IF...ELSE 、バッチ、ストアド プロシージャ、およびアドホック クエリで使用できます。 このコンストラクトをストアド プロシージャで使用する場合は、通常、何らかのパラメーターの存在をテストします。

IF テストは、別 IF の後に入れ子にすることも、次の後に入れ子に ELSEすることもできます。 入れ子のレベルの制限は、使用可能なメモリによって異なります。

IF DATENAME(weekday, GETDATE()) IN (N'Saturday', N'Sunday')
    SELECT 'Weekend';
ELSE
    SELECT 'Weekday';

その他の例については、EL Standard Edition (IF...EL Standard Edition)

例: Azure Synapse Analytics、Analytics Platform System (PDW)

次の例では、IF...ELSE を使用し、DimProduct テーブルの項目の重み付けを基にして、2 つの応答のどちらをユーザーに表示するかを決定します。

-- 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;