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