次の方法で共有


IF...ELSE (Transact-SQL)

適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Microsoft Fabric のSQL 分析エンドポイント Microsoft Fabric のウェアハウス

Transact-SQL ステートメントを実行する条件を設定します。 IF キーワードとその条件に従う Transact-SQL ステートメントは、条件が満たされた場合に実行されます。ブール式はTRUEを返します。 省略可能な ELSE キーワードは、 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 ステートメントまたはステートメント グループ。 ステートメント ブロックを使用しない限り、 IF または ELSE 条件は、1 つの 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 テーブルの項目の重み付けを基にして、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;