IIF 条件の結果に基づいて、指定した2つの値のうちの1つを返します。
構文 IIF( condition , value1 [,value2 ] )
引数
必須/
オプション
説明
condition
必須
値を求める条件。TRUEまたはFALSEになる有効な式を必要に応じて入力できます。
value1
必須
任意のデータ型(Binaryを除く)。条件がTRUEのときに返したい値。戻り値は常にこの引数で指定したデータ型になります。有効な式(別のIIF式を含む)を必要に応じて入力できます。
value2
オプション
任意のデータ型(Binaryを除く)。条件がFALSEのときに返したい値。有効な式(別のIIF式を含む)を必要に応じて入力できます。
一部のシステムで使用される条件関数と異なり、IIF関数ではFALSE条件(value2 )は必須ではありません。value2 を省略すると、関数は条件がFALSEのときに以下の値を返します。
• value1 が数値データ型のときは、0。• value1 が文字列データ型のときは、空文字列。• value1 がDate/Timeデータ型のときは、NULL。例えば、下記の式にはFALSE条件が含まれておられず、value1 は文字列データ型であるため、データ統合 はFALSEとなる各行に対して空の文字列を返します。
IIF( SALES > 100, EMP_NAME )
SALES
EMP_NAME
RETURN VALUE
150
John Smith
John Smith
50
Pierre Bleu
'' (empty string)
120
Sally Green
Sally Green
NULL
Greg Jones
'' (empty string)
戻り値 条件がTRUEの場合はvalue1 。
条件がFALSEの場合はvalue2 。
例えば、下記の式にはFALSE条件であるNULLが含まれているため、データ統合 はFALSEとなる各行に対してNULLを返します。
IIF( SALES > 100, EMP_NAME, NULL )
SALES
EMP_NAME
RETURN VALUE
150
John Smith
John Smith
50
Pierre Bleu
NULL
120
Sally Green
Sally Green
NULL
Greg Jones
NULL
データにマルチバイト文字が含まれ、条件引数で文字列データを比較する場合、タスクを実行するSecure Agentのコードページに応じた戻り値が返されます。
IIFとデータ型 IIFを使う場合、戻り値のデータ型は常に最大の精度を持つ結果のデータ型と同じです。
例えば、次のような式があるとします。
IIF( SALES < 100, 1, .3333 )
TRUEの結果(1)は整数であり、FALSEの結果(.3333)は小数です。Decimalデータ型は整数データ型よりも精度が高くなります。したがって、戻り値のデータ型は常に10進となります。
少なくとも1つの結果がDoubleの場合、戻り値のデータ型はDoubleになります。
IIFの特殊な使用法 ネストしたIIF文を使用して、複数の条件をテストできます。以下の例は、各種条件をテストし、販売額がゼロまたは負の場合には0を返します。
IIF( SALES > 0, IIF( SALES < 50, SALARY1, IIF( SALES < 100, SALARY2, IIF( SALES < 200, SALARY3, BONUS))), 0 )
このロジックは、次のようにコメントを加えると読みやすくなります。
IIF( SALES > 0, --then test to see if sales is between 1 and 49: IIF( SALES < 50, --then return SALARY1 SALARY1, --else test to see if sales is between 50 and 99: IIF( SALES < 100, --then return SALARY2, --else test to see if sales is between 100 and 199: IIF( SALES < 200, --then return SALARY3, --else for sales over 199, return BONUS) ) ), --else for sales less than or equal to zero, return 0)
更新方式でIIFを使用します。以下に例を示します。
IIF( ISNULL( ITEM_NAME ), DD_REJECT, DD_INSERT)
IIFの代替手段 多くの場合、IIFの代わりに
DECODE を使用します。DECODEを使うとコードが読みやすくなる場合があります。前節の最初の例でIIFの代わりにDECODEを使用すると、以下のようになります。
DECODE( TRUE, SALES > 0 and SALES < 50, SALARY1, SALES > 49 AND SALES < 100, SALARY2, SALES > 99 AND SALES < 200, SALARY3, SALES > 199, BONUS)