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 の Warehouse
Transact-SQL ステートメントを実行する条件を設定します。 IF キーワードおよびその条件に続く Transact-SQL ステートメントは、条件が満たされる (ブール式から TRUE が返される) 場合に実行されます。 省略可能な ELSE キーワードでは、IF 条件が満たされない (ブール式から FALSE が返される) 場合に実行される別の Transact-SQL ステートメントを指定します。
構文
IF Boolean_expression
{ sql_statement | statement_block }
[ ELSE
{ sql_statement | statement_block } ]
Note
SQL Server 2014 以前の 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)