次の方法で共有


IIF (Transact-SQL)

SQL Server 2012 ではブール式が true または false のいずれに評価されるかによって、2 つの値のいずれかを返します。

トピック リンク アイコン Transact-SQL 構文表記規則

構文

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)

関連項目

参照

CASE (Transact-SQL)

CHOOSE (Transact-SQL)