目次

Search

  1. はじめに
  2. 関数リファレンス
  3. 定数
  4. 演算子
  5. 日付
  6. 関数
  7. システム変数
  8. データ型リファレンス

関数リファレンス

関数リファレンス

IIF

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)