IF...ELSE (Transact-SQL)

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

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

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 }
1 つの Transact-SQL ステートメント、またはステートメント ブロックで定義したステートメントのグループです。 ステートメント ブロックを使用しない限り、IF または ELSE 条件は 1 つの Transact-SQL ステートメントのパフォーマンスにしか影響しません。

ステートメント ブロックを定義するには、流れ制御キーワードの BEGIN と END を使用してください。

解説

IF...ELSE 構造は、バッチ、ストアド プロシージャ、およびアドホック クエリ内で使うことができます。 この構造がストアド プロシージャで使用される場合、あるパラメーターの存在を調べるためによく使用されます。

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

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 テーブルの項目の重み付けを基にして、2 つの応答のどちらをユーザーに表示するかを決定します。

-- 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)
フロー制御言語 (Transact-SQL)ELSE (IF...ELSE) (Transact-SQL)