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