全部產品
Search
文件中心

Realtime Compute for Apache Flink:Flink CDC內建函數

更新時間:Nov 20, 2025

本文將向您介紹可在Flink CDC資料攝入作業的Transform模組運算式中使用的內建函數。

內建函數

Flink CDC資料攝入作業提供了豐富的內建函數,可以直接在transform模組中的projection和filter運算式中使用。

算術函數

函數

說明

numeric1 + numeric2

返回numeric1加上numeric2的值。

numeric1 - numeric2

返回numeric1減去numeric2的值。

numeric1 * numeric2

返回numeric1乘以numeric2的值。

numeric1 / numeric2

返回numeric1除以numeric2的值。

numeric1 % numeric2

返回numeric1對numeric2模數的值。

ABS(numeric)

返回numeric的絕對值。

CEIL(numeric)

返回numeric向上取整的值。

FLOOR(numeric)

返回numeric向下取整的值。

ROUND(numeric, int)

返回numeric四捨五入到小數點後n位的值。

UUID()

產生一個全域唯一ID(UUID)字串(例如“3d3c68f7-f608-473f-b60c-b0c44ad4cc4e”)。

使用RFC 4122 type 4方法偽隨機產生。

時間函數

函數

說明

LOCALTIME

返回當前時區下的本地時間,傳回型別為TIME(0)

LOCALTIMESTAMP

返回當前時區下的本地時間戳記,傳回型別為TIMESTAMP(3)

CURRENT_TIME

返回當前時區下的本地時間,與LOCALTIME相同。

CURRENT_DATE

返回當前時區下的本地日期。

CURRENT_TIMESTAMP

返回當前時區下的本地時間戳記。傳回型別為TIMESTAMP_LTZ(3)

NOW()

返回當前時區下的本地時間戳記,與CURRENT_TIMESTAMP相同。

DATE_FORMAT(timestamp, string)

將傳入的時間戳記按指定的格式化字串string進行格式化。

說明

格式化字串與Java中的SimpleDateFormat格式相容。

TIMESTAMPADD(timeintervalunit, interval, timepoint)

計算timepoint加上interval(單位timeintervalunit)之後的時間點。

timeintervalunit可被指定為SECOND、MINUTE、HOUR、DAY、MONTH或YEAR。

TIMESTAMPDIFF(timepointunit, timepoint1, timepoint2)

計算timepoint1和timepoint2之間差距多少timepointunit單位。

timepointunit可被指定為SECOND、MINUTE、HOUR、DAY、MONTH或YEAR。

TO_DATE(string1[, string2])

將傳入的日期文字string1按string2指定的格式轉化為DATE類型。

說明

在不指定格式化字串string2時,預設採用yyyy-MM-dd格式。

TO_TIMESTAMP(string1[, string2])

將傳入的時間戳記字串string1按string2指定的格式轉化為不帶時區資訊的TIMESTAMP類型。

說明

在不指定格式化字串string2時,預設採用yyyy-MM-ddHH:mm:ss格式。

FROM_UNIXTIME(numeric[, string])

將第一個參數作為UTC時區下1970-01-01 00:00:00後經過的秒數轉換為時間戳記,並根據第二個參數,返回一個指定格式的時間戳記字串。

說明

在不指定格式化字串string時,預設採用yyyy-MM-ddHH:mm:ss格式。

UNIX_TIMESTAMP()

返回目前時間下的UNIX時間戳記秒數。

UNIX_TIMESTAMP(string1[, string2])

將給定的日期時間字串string1轉換為另一個日期時間格式string2。

說明

在進行projection和filter運算式求值時,可以保證其中每個子運算式所得到的時間點都一致。例如,NOW() AS t1, NOW() AS t2, NOW() AS t3得到的t1t2t3一定對應同一個時間戳記,無論其求值時間和順序如何。

字串函數

函數

說明

string1 || string2

返回string1和string2拼接而成的字串。

說明

此運算子與邏輯或運算子不同。

CHAR_LENGTH(string)

返回string字串中的字元數。

UPPER(string)

返回string的大寫形式字串。

LOWER(string)

返回string的小寫形式字串。

TRIM(string1)

刪除string兩側的空白字元。

REGEXP_REPLACE(string1, string2, string3)

將string1中所有滿足string2模式的子串替換為string3。

例如,REGEXP_REPLACE('foobar', 'oo|ar', '__')求值的結果為 f__b__

SUBSTRING(string FROM integer1 [ FOR integer2 ])

返回string從第integer1到第integer2個字元的子串。

說明

在不提供FOR integer2語句時,預設提取到字串尾部。

CONCAT(string1, string2,…)

返回將string1、string2、…拼接在一起形成的新字串。

例如,CONCAT('AA', 'BB', 'CC')求值的結果為AABBCC

類型轉換函式

您可以使用 CAST(<運算式> AS <類型>)文法進行顯式強制類型轉換。目前支援以下轉換路徑:

源類型

目標類型

說明

任何

VARCHAR

重要

目前不可使用 STRING 作為目的類型,請使用等價的 VARCHAR 類型。

任何類型的欄位均可被轉換為字串。

NUMERIC

STRING

BOOLEAN

任何非數字0或FALSE字串的字面量均會被轉換為TRUE。

NUMERIC

STRING

TINYINT

結果會被截斷到-128到127範圍內。

NUMERIC

STRING

SMALLINT

結果會被截斷到-32768到32767範圍內。

NUMERIC

STRING

INTEGER

結果會被截斷到-2147483648到2147483647範圍內。

NUMERIC

STRING

BIGINT

結果會被截斷到-9223372036854775808到9223372036854775807範圍內。

NUMERIC

STRING

FLOAT

NUMERIC

DOUBLE

NUMERIC

DECIMAL

STRING

TIMESTAMP_TZ

TIMESTAMP_LTZ

TIMESTAMP

字串必須為合法的ISO_LOCAL_DATE_TIME格式。

比較函數

說明

除非特別說明,否則以下內建函數在輸入參數包含NULL時均返回NULL。

函數

說明

value1 = value2

如果value1等於value2,則返回TRUE;否則返回FALSE。

value1 <> value2

如果value1不等於value2,則返回TRUE;否則返回FALSE。

value1 > value2

如果value1大於value2,則返回TRUE;否則返回FALSE。

value1 >= value2

如果value1大於或等於value2,則返回TRUE;否則返回FALSE。

value1 < value2

如果value1小於value2,則返回TRUE;否則返回FALSE。

value1 <= value2

如果value1小於或等於value2,則返回TRUE;否則返回FALSE。

value IS NULL

如果value是NULL,則返回TRUE;否則返回FALSE。

value IS NOT NULL

如果value不是NULL,則返回TRUE;否則返回FALSE。

value1 BETWEEN value2 AND value3

如果value1的值介於value2和value3之間,則返回TRUE;否則返回FALSE。

value1 NOT BETWEEN value2 AND value3

如果value1的值並非介於value2和value3之間,則返回TRUE;否則返回FALSE。

string1 LIKE string2

如果string1的值與string2定義的模式比對,則返回TRUE;否則返回FALSE。

string1 NOT LIKE string2

如果string1的值與string2定義的模式不匹配,則返回TRUE;否則返回FALSE。

value1 IN (value2 [, value3]* )

如果value1的值存在於[value2, value3, ...]列表中,則返回TRUE;否則返回FALSE。

value1 NOT IN (value2 [, value3]* )

如果value1的值不存在於[value2, value3, ...]列表中,則返回TRUE;否則返回FALSE。

邏輯函數

函數

說明

boolean1 OR boolean2

如果boolean1和boolean2至少有一個為TRUE,則返回TRUE。

boolean1 AND boolean2

如果boolean1和boolean2均為TRUE,則返回TRUE。

NOT boolean

如果boolean為TRUE,則返回FALSE;如果boolean是FALSE,則返回TRUE。

boolean IS FALSE

如果boolean為TRUE,則返回FALSE;如果boolean是FALSE,則返回TRUE。

boolean IS NOT FALSE

如果boolean為TRUE,則返回TRUE;如果boolean是FALSE,則返回FALSE。

boolean IS TRUE

如果boolean為TRUE,則返回TRUE;如果boolean是FALSE,則返回FALSE。

boolean IS NOT TRUE

如果boolean為TRUE,則返回FALSE;如果boolean是FALSE,則返回TRUE。

條件函數

函數

說明

CASE value WHEN value1_1 [, value1_2]* THEN RESULT1 (WHEN value2_1 [, value2_2 ]* THEN result_2)* (ELSE result_z) END

依次檢查value值是否等於WHEN子句給出的值,並返回第一個相等子句的RESULT值。

如果沒有任何子句滿足條件,則返回ELSE子句指定的值。如果沒有指定ELSE子句,則返回NULL。

CASE WHEN condition1 THEN result1 (WHEN condition2 THEN result2)* (ELSE result_z) END

依次檢查value值是否滿足每個WHEN子句給出的條件,並返回第一個滿足條件子句的RESULT值。

如果沒有任何子句滿足條件,則返回ELSE子句指定的值。如果沒有指定ELSE子句,則返回NULL。

COALESCE(value1 [, value2]*)

返回[value1、value2、……]列表中第一個不為NULL的元素。如果列表中所有元素均為NULL,則返回NULL。

IF(condition, true_value, false_value)

如果condition子句對應的條件為真,則返回true_value;否則返回false_value。