論理関数 – IIF(Transact-…SQL)

  • 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)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です