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