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
を返します。
構文
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 ステートメントのパフォーマンスにのみ影響する可能性があります。
ステートメント ブロックを定義するには、フロー制御キーワード BEGIN
と END
を使用します。
解説
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;