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