本文将为您列举解决方案数据转换模式支持的一些函数。
注意
目前对字符串和时间戳输入和输出的默认时区 UTC+8。您可以使用 CONVERT_TZ 函数转为期望的其他时区
若无特殊说明,当参数为 null 时,返回结果会是 null。
函数名 | 描述 |
---|---|
value1 = value2 | 如果 value1 等于 value2,返回 true;如果 value1 或 value2 任一为 null,返回 null。 |
value1 <> value2 | 如果 value1 不等于 value2,返回 true;如果 value1 或 value2 任一为 null,返回 null。 |
value1 > value2 | 如果 value1 大于 value2,返回 true;如果 value1 或 value2 任一为 null,返回 null。 |
value1 >= value2 | 如果 value1 大于等于 value2,返回 true;如果 value1 或 value2 任一为 null,返回 null。 |
value1 < value2 | 如果 value1 小于 value2,返回 true;如果 value1 或 value2 任一为 null,返回 null。 |
value1 <= value2 | 如果 value1 小于等于 value2,返回 true;如果 value1 或 value2 任一为 null,返回 null。 |
value IS NULL | 如果 value 为 null,返回 true。 |
value IS NOT NULL | 如果 value 不为 null,返回 true。 |
value1 BETWEEN value2 AND value3 | 如果 value1 大于等于 value2 且 小于等于 value3 则返回 true。 注意 当前版本暂不支持 SYMMETRIC 关键字。 例如:
|
value1 NOT BETWEEN value2 AND value3 | 如果 value1 小于 value2 或大于 value3 则返回 true。 注意 当前版本暂不支持 SYMMETRIC 关键字 |
string1 LIKE string2 | 如果 string1 匹配模式 string2,返回 true;如果 string1 或 string2 为 null,返回 null。 |
string1 NOT LIKE string2 | 如果 string1 不匹配模式 string2,返回 true;如果 string1 或 string2 为 null,返回 null。 |
value1 IN (value2 [, value3]* ) | 如果 value1 存在于给定列表中(value2, value3, ...),返回 true |
value1 NOT IN (value2 [, value3]* ) | 如果 value1 不存在于给定列表中(value2, value3, ...),返回 true |
函数名 | 描述 |
---|---|
boolean1 OR boolean2 | 如果 boolean1 为 true 或 boolean2 为 true,返回 true。 注意 暂不支持含 null 的参数 |
boolean1 AND boolean2 | 如果 boolean1 为 true 且 boolean2 为 true,返回 true。 注意 暂不支持含 null 的参数 |
NOT boolean | 如果 boolean 为 false,返回 true;如果 boolean 为 true,返回 false。 注意 暂不支持含 null 的参数 |
boolean IS FALSE | 如果 boolean 为 false,返回 true;如果 boolean 为 true,返回 false。 注意 暂不支持含 null 的参数 |
boolean IS NOT FALSE | 如果 boolean 为 true,返回 true;如果 boolean 为 false,返回 false。 注意 暂不支持含 null 的参数 |
boolean IS TRUE | 如果 boolean 为 true,返回 true;如果 boolean 为 false,返回 false。 注意 暂不支持含 null 的参数 |
boolean IS NOT TRUE | 如果 boolean 为 false,返回 true;如果 boolean 为 true,返回 false。 注意 暂不支持含 null 的参数 |
函数名 | 描述 |
---|---|
numeric1 + numeric2 | 返回 numeric1 + numeric2 的值 注意 暂不支持含 null 的参数 |
numeric1 - numeric2 | 返回 numeric1 - numeric2 的值 注意 暂不支持含 null 的参数 |
numeric1 * numeric2 | 返回 numeric1 乘 numeric2 的积 注意 暂不支持含 null 的参数 |
numeric1 / numeric2 | 返回 numeric1 除以 numeric2 的商 注意 暂不支持含 null 的参数 |
numeric1 % numeric2 | 返回 numeric1 除以 numeric2 的余数(取余) 注意 暂不支持含 null 的参数 |
ABS(numeric) | 返回 numeric 的绝对值。 |
CEIL(numeric) | 将数值向上取整,并返回大于或等于该数值的最小整数。 |
FLOOR(numeric) | 将数值向下取整,并返回大于或等于该数值的最小整数。 |
| 将数值四舍五入取整。
|
UUID() | 返回随机生成的 UUID 字符串 |
|
注意 目前 numeric2 必须大于 0,numeric1 必须大于 1。 |
EXP(numeric) | 返回 e 的 numeric 次方。 |
POWER(numeric1, numeric2) | 返回 numeric1 的 numeric2 次方。 |
SQRT(numeric) | 返回 numeric 的平方根。 |
|
注意 seed 参数不接受 null 值。当 from 或 to 参数任意为 null 时,结果为 null |
|
注意 seed、to 参数均不接受 null 值 |
TRUNCATE(numeric1, integer2) | 返回一个数值,截断到 integer2 位小数。 |
函数名 | 描述 |
---|---|
string1 | 注意 如果任意参数为 null,则结果整体为 null。 |
CHAR_LENGTH(string) | 返回字符串的字符个数。如果字符串为 null,则返回 null。 |
UPPER(string) | 返回字符串的大写形式。如果字符串为 null,则返回 null。 |
LOWER(string) | 返回字符串的小写形式。如果字符串为 null,则返回 null。 |
TRIM(string1) | 移除字符串 string1 两端的空格/空白符号。 注意 目前暂不支持 LEADING、TRAILING 和 FROM 关键字 |
REGEXP_REPLACE(string1, string2, string3) | 返回一个字符串,该字符串是从 string1 中将所有与正则表达式 string2 连续匹配的子字符串替换为 STRING3 的结果。如果任意参数为 null,结果为 null。 |
SUBSTRING(string FROM integer1 [ FOR integer2 ]) | 返回字符串 STRING 从位置 integer1 开始(注意起始位置为 1)的子字符串,长度为 integer2(如果不指定 FOR 关键字,则默认为到字符串末尾)。 注意 integer1 和 integer2 参数不接受 null 值 |
SUBSTR(string, integer1[, integer2]) | 返回字符串 STRING 从位置 integer1 开始(注意起始位置为 1)的子字符串,长度为 integer2(如果不指定长度,则默认为到字符串末尾)。 注意 integer1 和 integer2 参数不接受 null 值 |
CONCAT(string1, string2,…) | 返回 string1 和 string2 字符串拼接的结果,与 注意 如果任意参数为 null,则结果整体为 null。 |
OVERLAY(str1 PLACING str2 FROM int1 [ FOR int2 ]) | 返回一个字符串,该字符串将 string1 中从位置 integer1 开始的 integer2 个字符(默认为 string2 的长度)替换为 string2。如果任意参数为 null,结果为 null。 |
PRINTF(format[, obj]*) | 使用 Java printf 函数的语义来返回格式化后的字符串。如果字符串为 null,则结果为 null。 |
STARTSWITH(expr, startExpr) | 判断 expr 是否以 startExpr 开头。如果 startExpr 为空,则结果为 true。 |
ENDSWITH(expr, endExpr) | 判断 expr 是否以 startExpr 结尾。如果 startExpr 为空,则结果为 true。 |
REGEXP(string1, string2) | 如果 string1 的任何(可能为空的)子字符串匹配 Java 正则表达式 string2 则返回 true,否则返回 false。 |
REGEXP_EXTRACT(string1, string2[, integer]) | 返回一个字符串,该字符串从 string1 中提取,使用指定的正则表达式 string2 和匹配组索引 integer。 |
LPAD(string1, integer, string2) | 返回一个新字符串,该字符串是将 string1 使用 string2 在左侧填充至指定的整数长度。 |
RPAD(string1, integer, string2) | 返回一个新字符串,该字符串是将 string1 使用 string2 在右侧填充至指定的整数长度。 |
LOCATE(string1, string2[, integer]) | 返回 string2 中从位置 integer 开始搜索 string1 的第一次出现的位置。如果未找到,则返回 0。 |
STR_TO_MAP(string1[, string2, string3]) | 返回一个映射,将 string1 通过分隔符拆分为 <String, String> 键值对。string2 是对的分隔符,默认为 , 符号 |
REVERSE(string) | 返回 string 的倒序形式。如果 string 为 null,则返回 null。 |
函数名 | 描述 |
---|---|
GET_JSON_OBJECT(jsonStr, pathStr[, defaultVal]) | 返回 jsonStr(JSON 字符串)中 pathStr 给定位置的元素值(可以是多种类型)。 |
GET_JSON_STRING(jsonStr, pathStr[, defaultVal]) | 返回 jsonStr(JSON 字符串)中 pathStr 给定位置的元素值,并统一转为 String 类型。 |
TO_JSON(value[, defaultVal]) | 将 value 对象(可以是多种类型)转换为 JSON 字符串。 |
JSON_EXISTS(jsonValue, path) | 判定 jsonValue 字符串是否满足给定的 path 路径搜索条件。如果符合可以找到该路径,则返回 true。 注意 暂不支持 ON ERROR 等关键字。如果任意参数为 null,则返回 false。 |
函数名 | 描述 |
---|---|
AES_ENCRYPT(plaintext, base64Key, [algorithm]) | 通过给定的加密算法(默认为 'aes-256-cbc'),以给定的 base64Key(原始秘钥长度需要满足 16 字节、24 字节或 32 字节)来加密 plaintext 字符串,输出为 Base64 编码的字符串格式。 目前支持的算法为: |
AES_DECRYPT(encryptedBase64, base64Key, [algorithm]) | 通过给定的加密算法(默认为 'aes-256-cbc'),以给定的 base64Key(原始秘钥长度需要满足 16 字节、24 字节或 32 字节)来解密以 Base64 编码的 encryptedBase64 字符串,输出字符串格式。 目前支持的算法为: |
TO_BASE64(plaintext) | 将 plaintext 字符串以 Base64 格式编码并返回。 |
FROM_BASE64(encoded) | 将 Base64 编码的字符串以 Base64 格式解码并返回原文。 |
DECODE(str, charset) | 使用提供的字符集 charset(例如 'US-ASCII','ISO-8859-1','UTF-8','UTF-16BE','UTF-16LE','UTF-16')将字符串 str 解码。 |
ENCODE(str, charset) | 使用提供的字符集 charset(例如 'US-ASCII','ISO-8859-1','UTF-8','UTF-16BE','UTF-16LE','UTF-16')将字符串 str 编码,输出为二进制 byte 数组。 |
| 对 str 应用以函数名表示的散列算法(例如 MD5)。 |
函数名 | 描述 |
---|---|
LOCALTIME | 返回当前的时间(精度为毫秒),类型为 Time,即包含时、分、秒、毫秒 注意 目前只支持 UTC+8 时区 |
LOCALTIMESTAMP | 返回当前的时间戳(精度为毫秒),类型为 Timestamp,即包含年、月、日、时、分、秒、毫秒 注意 目前只支持 UTC+8 时区 |
CURRENT_TIME | 返回当前的时间(精度为毫秒),类型为 Time,即包含时、分、秒、毫秒。 注意 目前只支持 UTC+8 时区,因此该函数与 LOCALTIME 函数同义。 |
CURRENT_DATE | 返回当前的日期,类型为 Date,即包含年、月、日 注意 目前只支持 UTC+8 时区 |
INTERVAL string range | 可给某个 Timestamp 类型的返回函数增加或减去一段时长(可部分替代 TIMESTAMPADD 函数)。 例如 TO_TIMESTAMP('2024-10-08 23:59:59', 'yyyy-MM-dd HH:mm:ss') - INTERVAL 2 DAY <= NOW() |
NOW() | 返回当前的时间戳(精度为毫秒),类型为 Timestamp,即包含年、月、日、时、分、秒、毫秒。 注意 目前只支持 UTC+8 时区,因此该函数与 LOCALTIMESTAMP 同义。 |
DATE_FORMAT(timestamp, string) | 将时间戳转换为指定日期格式字符串的值。格式字符串与 Java 的 SimpleDateFormat 兼容。 |
TIMESTAMPDIFF(timepointunit, timepoint1, timepoint2) | 返回 timepoint1 和 timepoint2 之间的(有符号)时间单位数。 例如 TIMESTAMPDIFF(HOUR, TIMESTAMPADD(DAY, -1, NOW()), NOW()) 返回 24 |
CONVERT_TZ(string1, string2, string3) | 将日期时间字符串 string1(默认 ISO 时间戳格式为 'yyyy-MM-dd HH:mm:ss')从时区 string2 转换为时区 string3。时区的格式可以是缩写,例如 'PST'(可能有歧义)。推荐使用时区全名,例如 'Asia/Shanghai',或自定义 ID,例如 'UTC+8:00'。 例如,CONVERT_TZ('2024-11-08 18:35:33', 'Asia/Shanghai', 'Asia/Tokyo') 返回 '2024-11-08 19:35:33'。 |
TIMESTAMPADD(timeintervalunit, interval, timepoint) | 返回一个新的时间值,该时间值是在 timepoint 上加上一个(带符号的)整数间隔。间隔的单位由 unit 参数指定,该参数应为以下值之一:SECOND、MINUTE、HOUR、DAY、MONTH、YEAR。暂不支持 WEEK 和 QUARTER 等其他值。 例如 TIMESTAMPADD(DAY, -1, NOW()) 返回一天前的时间戳 |
FROM_UNIXTIME(numeric[, string]) | 以格式 string(默认为 'yyyy-MM-dd HH:mm:ss')来输出数字参数 numberic 的值。numeric 表示自 '1970-01-01 00:00:00’ 以来的秒数,可由 UNIX_TIMESTAMP() 函数生成。 注意 目前只支持 UTC+8 时区 |
| 返回以秒为单位获取当前的 Unix 时间戳。 |
UNIX_TIMESTAMP_MILLIS() | 返回以毫秒为单位获取当前的 Unix 时间戳。 |
TO_DATE(string1[, string2]) | 将格式为 string2 的日期字符串 string1(默认格式为 'yyyy-MM-dd')转换为 Date 类型。 |
TO_TIMESTAMP(string1[, string2]) | 将格式为 string2 的日期时间字符串 string1(默认格式为 'yyyy-MM-dd HH:mm:ss')转换为时间戳。 |
函数名 | 描述 |
---|---|
CASE value WHEN value1_1 [, value1_2]* THEN RESULT1 (WHEN value2_1 [, value2_2 ]* THEN result_2)* (ELSE result_z) END | 当值 value 首次符合 (valueX_1, valueX_2, …) 中的值,返回对应的结果 resultX。 |
CASE WHEN condition1 THEN result1 (WHEN condition2 THEN result2)* (ELSE result_z) END | 当第一个条件 conditionX 满足时,返回 resultX。 |
COALESCE(value1 [, value2]*) | 返回第一个非 null 的参数。如果所有参数都是 null,则也返回 null。 |
IF(condition, true_value, false_value) | 如果满足 condition 条件,则返回 true_value;否则返回 false_value。 |
NULLIF(value1, value2) | 如果 value1 等于 value2,则返回 null;否则返回 value1。 |
IS_NUMBER(str) | 判断 str 给定的字符串是否是一个合法数字,如果符合则返回 true. 如果字符串为 null 则返回 null。 |
IS_SPACES(str) | 判断 str 给定的字符串是否由空白符(空格、tab)组成,如果符合则返回 true. 如果字符串为 null 则返回 null。 注意 null 和空字符串不包含任何符号,因此返回 false。 |
IS_ALPHA(str) | IS_ALPHA(str) 函数用于检查给定的字符串 str 是否仅由字母组成。如果 str 中的所有字符都是字母,则返回 TRUE;否则返回 FALSE。 注意 null 和空字符串不包含任何符号,因此返回 false。 |
IS_DIGIT(str) | 判断 str 给定的字符串是否全由数字组成,如果符合则返回 true. 如果字符串为 null 则返回 null。 注意 null 和空字符串不包含任何符号,因此返回 false。 |
函数名 | 描述 |
---|---|
CAST(value AS type) | 将 value 转为指定的 type 类型,例如 CAST(value AS VARCHAR) 将 value 转为字符串类型。 |
TYPEOF(input) | 返回 input 字段的实际 Java 对象类型(大写形式),例如 STRING, INTEGER, ARRAY, MAP 等。 |
函数名 | 描述 |
---|---|
CARDINALITY(array) | 返回数组中的元素数量。如果数组为 null,则返回 0. |
CARDINALITY(map) | 返回 Map 中的元素数量。如果参数为 null,则返回 0. |
CREATE_MAP(k1, v1, k2, v2 ...) | 创建一个 Map 键值对,k 和 v 支持任意类型 |
CREATE_LIST(...) | 创建一个 List 数组,元素支持任意类型 |