- 2017/03/14
- 読了時間2分
-
- c
- k
- r
- P
- i
-
+5
以下に該当します。 SQL Server (サポートされているすべてのバージョン) Azure SQL Database
SQL Serverでブール式がtrueと評価されるかfalseと評価されるかに応じて、2つの値のうち1つを返します。
Transact-SQL構文の規約
構文
IIF( boolean_expression, true_value, false_value )
注意
SQL Server 2014以前のTransact-SQL構文を見るには、「旧バージョンのドキュメント」を参照してください。
引数
boolean_expression
有効なブール式です。
この引数がブール式でない場合、構文エラーが発生します。
true_value
boolean_expressionがtrueと評価された場合に返す値です。
false_value
boolean_expressionがfalseと評価された場合に返す値です。
Return Types
true_valueとfalse_valueの型から最も高い優先順位を持つデータ型を返します。 詳細は、Data Type Precedence (Transact-SQL)を参照してください。
備考
IIFはCASE式を書くための省略形です。 第1引数として渡されたブール式を評価し、その結果に基づいて他の2つの引数のいずれかを返します。 つまり、ブール式が真の場合はtrue_valueが返され、ブール式が偽または不明の場合はfalse_valueが返されます。true_valueとfalse_valueは任意の型を取ることができます。 Boolean式、NULLの処理、戻り値の型など、CASE式に適用されるルールは、IIFにも適用されます。
IIFがCASEに変換されることは、この関数の動作の他の側面にも影響を与えます。 CASEの式は10レベルまでしかネストできないため、IIF文も最大10レベルまでしかネストできません。 また、IIF は意味的に同等の CASE 式として他のサーバーにリモートされ、リモートされた CASE 式のすべての動作が行われます。 シンプルな IIF の例
DECLARE @a INT = 45, @b INT = 40;SELECT = IIF( @a > @b, 'TRUE', 'FALSE' );
以下は結果セットです。
Result -------- TRUE
B. IIF with NULL constants
SELECT = IIF( 45 > 30, NULL, NULL );
このステートメントの結果はエラーです。
C. IIF with NULL parameters
DECLARE @P INT = NULL, @S INT = NULL; SELECT = IIF( 45 > 30, @P, @S );
結果セットは次のとおりです。
Result -------- NULL
See Also
CASE (Transact-SQL)
CHOOSE (Transact-SQL)