IF...ELSE (Transact-SQL)IF...ELSE (Transact-SQL)

適用対象: ○SQL Server (2008 以降)○Azure SQL Database○Azure SQL Data Warehouse ○Parallel Data Warehouse THIS TOPIC APPLIES TO: yesSQL Server (starting with 2008)yesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

実行を条件を設定、 Transact-SQLTransact-SQLステートメントです。Imposes conditions on the execution of a Transact-SQLTransact-SQL statement. Transact-SQLTransact-SQL IF キーワードおよびその条件に続くステートメントが実行されるは、条件が満たされる場合。 ブール式が TRUE を返します。The Transact-SQLTransact-SQL statement that follows an IF keyword and its condition is executed if the condition is satisfied: the Boolean expression returns TRUE. オプションの ELSE キーワードは、IF 条件が満たされない (ブール式から FALSE が返される) 場合に実行される別の Transact-SQLTransact-SQL ステートメントを指定します。The optional ELSE keyword introduces another Transact-SQLTransact-SQL statement that is executed when the IF condition is not satisfied: the Boolean expression returns FALSE.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions


IF Boolean_expression   
     { sql_statement | statement_block }   
[ ELSE   
     { sql_statement | statement_block } ]   


TRUE または FALSE を返す式です。Is an expression that returns TRUE or FALSE. ブール式が SELECT ステートメントを含む場合は、SELECT ステートメントをかっこで囲む必要があります。If the Boolean expression contains a SELECT statement, the SELECT statement must be enclosed in parentheses.

{ sql_statement| statement_block }{ sql_statement| statement_block }
いずれかである Transact-SQLTransact-SQLステートメントまたはステートメントがステートメント ブロックを使用して定義されているグループ化します。Is any Transact-SQLTransact-SQL statement or statement grouping as defined by using a statement block. ステートメント ブロックがない限り、使用する場合、または条件が 1 つだけのパフォーマンスに影響する他 Transact-SQLTransact-SQLステートメントです。Unless a statement block is used, the IF or ELSE condition can affect the performance of only one Transact-SQLTransact-SQL statement.

ステートメント ブロックを定義するには、流れ制御キーワードの BEGIN と END を使用してください。To define a statement block, use the control-of-flow keywords BEGIN and END.


IF...ELSE 構造は、バッチ、ストアド プロシージャ、およびアドホック クエリ内で使うことができます。An IF...ELSE construct can be used in batches, in stored procedures, and in ad hoc queries. この構造がストアド プロシージャで使用される場合、あるパラメーターの存在を調べるためによく使用されます。When this construct is used in a stored procedure, it is frequently used to test for the existence of some parameter.

IF テストは、他の IF の後、または ELSE の後で入れ子にすることができます。IF tests can be nested after another IF or following an ELSE. 入れ子のレベルの制限は、使用可能なメモリによって異なります。The limit to the number of nested levels depends on available memory.


IF DATENAME(weekday, GETDATE()) IN (N'Saturday', N'Sunday')
       SELECT 'Weekend';
       SELECT 'Weekday';

例については、次を参照してくださいELSE ( IF しています。ELSE )(です。TRANSACT-SQL と #41 です。.For more examples, see ELSE (IF...ELSE) (Transact-SQL).

例: Azure SQL データ ウェアハウスAzure SQL Data WarehouseParallel Data WarehouseParallel Data WarehouseExamples: Azure SQL データ ウェアハウスAzure SQL Data Warehouse and Parallel Data WarehouseParallel Data Warehouse

次の例でIF…ELSE内の項目の重み付けに基づいて、ユーザーを表示する 2 つの応答の決定、DimProductテーブル。The following example uses IF…ELSE to determine which of two responses to show the user, based on the weight of an item in the DimProduct table.

-- 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);  
    (SELECT @productKey AS ProductKey, EnglishDescription, Weight, 
    'This product is available for shipping or pickup.' 
        AS ShippingStatus
    FROM DimProduct WHERE ProductKey = @productKey);  

参照See Also

作業を開始してください.END (です。TRANSACT-SQL と #41 です。 BEGIN...END (Transact-SQL)
END (です。作業を開始してください.終了)(です。TRANSACT-SQL と #41 です。 END (BEGIN...END) (Transact-SQL)
SELECT (Transact-SQL) SELECT (Transact-SQL)
中に (です。TRANSACT-SQL と #41 です。 WHILE (Transact-SQL)
場合 (です。TRANSACT-SQL と #41 です。 CASE (Transact-SQL)
フロー制御言語 (です。TRANSACT-SQL と )です。 ELSE ( IF しています.ELSE )(です。TRANSACT-SQL と ) です。Control-of-Flow Language (Transact-SQL) ELSE (IF...ELSE) (Transact-SQL)