@COLTEST
@COLTESTファンクションでは、1つ以上の列条件を使用したテストによる条件演算を有効にします。条件が満たされた場合、@COLTESTはTRUEを返します。条件演算を実行するには、@IFファンクションを使用します。
構文
@COLTEST (<source_column>, <test_condition> [, <test_condition>] [, ...])
<source_column>
ソース列名。
<test_condition>
有効な値:
PRESENT
列がソース・レコードに存在し、NULLでないことを示します。変更されない列の値をデータベースが記録しない場合、列の値は失われることがありますが、これはNULLと同じではありません。
NULL
列がソース・レコードに存在し、NULLであることを示します。
MISSING
列がソース・レコードに存在しないこと示します。
INVALID
列がソース・レコードに存在するが無効なデータを含んでいることを示します。
例
例1
次の例では、@IFを使用して、ソース・レコードにBASE_SALARY列が存在し(およびNULLでなく)、かつ250000より大きい場合に、HIGH_SALARY列に値をマップします。そうでない場合はNULLが返されます。
HIGH_SALARY =
@IF (@COLTEST (BASE_SALARY, PRESENT) AND
BASE_SALARY > 250000,
BASE_SALARY, @COLSTAT (NULL))
例2
次の例では、AMT列が欠落しているか無効の場合には0が返され、それ以外の場合にはAMTの値が返されます。
AMOUNT = @IF (@COLTEST (AMT, MISSING, INVALID), 0, AMT)
例3
次の例では、特別な値がサポートされている場合でも、すべてのターゲットのcol列の証跡で+nanおよび+snanを0にマップします。
TABLE src_table COLMAP(col = @if(@COLTEST(col, NAN, SNAN), 0, col))
例4
次の例では、col列の証跡でInfinity/-Infinityを0にマップして、特定のターゲットへのデフォルト・マッピングをオーバーライドします。
MAP src_table, TARGET tgt_table, COLMAP(col = @if(@COLTEST(col, INF, -INF), 0,
col))