適用対象:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Microsoft Fabric の SQL 分析エンドポイント
Microsoft Fabric のウェアハウス
Microsoft Fabric の SQL データベース
Transact-SQL ステートメントを実行する条件を設定します。
IF キーワードとその条件に従う Transact-SQL ステートメントは、条件が満たされた場合に実行されます。ブール式はTRUEを返します。 省略可能な ELSE キーワードは、 IF 条件が満たされていない場合に実行される別の Transact-SQL ステートメントを導入します。ブール式は FALSEを返します。
Syntax
IF boolean_expression
{ sql_statement | statement_block }
[ ELSE
{ sql_statement | statement_block } ]
Arguments
boolean_expression
TRUEまたはFALSEを返す式。 ブール式に SELECT ステートメントが含まれている場合は、 SELECT ステートメントをかっこで囲む必要があります。
{ sql_statement | statement_block }
ステートメント ブロックを使用して定義された Transact-SQL ステートメントまたはステートメント グループ。 ステートメント ブロックを使用しない限り、 IF または ELSE 条件は、1 つの Transact-SQL ステートメントのパフォーマンスにのみ影響する可能性があります。
ステートメント ブロックを定義するには、フロー制御キーワード BEGIN と ENDを使用します。
Remarks
IF...ELSEコンストラクトは、バッチ、ストアド プロシージャ、およびアドホック クエリで使用できます。 このコンストラクトをストアド プロシージャで使用する場合は、通常、何らかのパラメーターの存在をテストします。
IF テストは、別の IF の後、または ELSEの後に入れ子にすることができます。 入れ子のレベルの制限は、使用可能なメモリによって異なります。
Examples
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;