@COLTEST

使用 @COLTEST 函数可以通过测试一个或多个列条件来启用条件计算。如果满足条件,@COLTEST 将返回 TRUE。要执行条件计算,请使用 @IF 函数。

语法

@COLTEST (<source_column>, <test_condition> [, <test_condition>] [, ...])

<source_column>

源列的名称。

<test_condition>

有效值包括:

PRESENT

指明源记录中存在列,而不是 NULL。如果数据库不记录未更改但与 NULL 不相同的列的值,则可能缺少列值。

NULL

指明源记录和 NULL 中存在列。

MISSING

指明源记录中不存在列。

INVALID

指明源记录中存在列,但包含无效数据。

示例

示例 1

以下示例仅当源记录中的 BASE_SALARY 列同时存在(而不是 NULL)且大于 250000 时,才使用 @IF 将值映射到 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))