次の方法で共有


論理関数 - IIF (Transact-SQL)

適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance

SQL Server ではブール式が 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_valuefalse_valueです。 詳細については、「データ型の優先順位 (Transact-SQL)」を参照してください。

解説

IIF は CASE 式の簡略版です。 最初の引数として渡されたブール式を評価し、評価の結果に基づいて他の 2 つの引数のいずれかを返します。 つまり、 true_value ブール式が true の場合、返されると、 false_value ブール式が false または不明のかどうかに返されます。 任意の型の true_valuefalse_value を指定できます。 ブール式、NULL 処理、および戻り値の型に対する CASE 式に適用されるのと同じ規則が IIF にも適用されます。 詳細については、「CASE (Transact-SQL)」を参照してください。

IIF が CASE に変換されるという事実は、この関数の動作の他の側面にも影響を与えます。 CASE 式では最大 10 のレベルまで入れ子が許容されるため、IIF ステートメントでも最大 10 のレベルまで入れ子が許容されます。 また、IIF では、意味が同等の CASE 式として他のサーバーにリモート処理を行い、リモート処理された CASE 式のすべての動作を実行します。

Azure Synapse Analytics の専用 SQL プールでは、IIF はサポートされていません。

A. 簡単な IIF の例

DECLARE @a INT = 45, @b INT = 40;
SELECT [Result] = IIF( @a > @b, 'TRUE', 'FALSE' );

結果セットは次のようになります。

Result  
--------  
TRUE  

B. NULL 定数を使用する IIF

SELECT [Result] = IIF( 45 > 30, NULL, NULL );

このステートメントの結果はエラーになります。

C. NULL のパラメーターを使用する IIF

DECLARE @P INT = NULL, @S INT = NULL;  
SELECT [Result] = IIF( 45 > 30, @P, @S );

結果セットは次のようになります。

Result  
--------  
NULL  

次のステップ