IIF (Transact-SQL)
SQL Server 2012 ではブール式が true または false のいずれに評価されるかによって、2 つの値のいずれかを返します。
構文
IIF ( boolean_expression, true_value, false_value )
引数
boolean_expression
有効なブール式です。この引数がブール式でない場合、構文エラーが発生します。
true_value
boolean_expression が true に評価される場合に戻す値です。false_value
boolean_expression が false に評価される場合に戻す値です。
戻り値の型
true_value および false_value のセットの中から、最も優先順位の高いデータ型を返します。 詳細については、「データ型の優先順位 (Transact-SQL)」を参照してください。
説明
IIF は CASE 式を簡略化して書き込みます。 最初の引数として渡されたブール式を評価し、評価の結果に基づいて他の 2 つの引数のいずれかを返します。 つまり、ブール式が true の場合は true_value が返され、ブール式が false または不明の場合は false_value が返されます。 true_value と false_value の型に制限はありません。 ブール式、NULL 処理、および戻り値の型に対する CASE 式に適用されるのと同じ規則が IIF にも適用されます。 詳細については、「CASE (Transact-SQL)」を参照してください。
IIF が CASE に変換されるという事実は、この関数の動作の他の側面にも影響を与えます。 CASE 式では最大 10 のレベルまで入れ子が許容されるため、IIF ステートメントでも最大 10 のレベルまで入れ子が許容されます。 また、IIF は、意味が同じ CASE 式として他のサーバーにリモート処理を行い、リモート処理された CASE 式のすべての動作を実行します。
使用例
A. 簡単な IIF の例
DECLARE @a int = 45, @b int = 40;
SELECT IIF ( @a > @b, 'TRUE', 'FALSE' ) AS Result;
以下に結果セットを示します。
Result
--------
TRUE
(1 row(s) affected)
B. NULL 定数を使用する IIF
SELECT IIF ( 45 > 30, NULL, NULL ) AS Result;
このステートメントの結果はエラーになります。
C. NULL パラメーターを使用する IIF
DECLARE @P INT = NULL, @S INT = NULL;
SELECT IIF ( 45 > 30, @p, @s ) AS Result;
以下に結果セットを示します。
Result
--------
NULL
(1 row(s) affected)