SQL函数示例
本文为您介绍云消息队列 MQTT 版Kafka规则中SQL函数的使用示例。
数学运算函数
abs(X: integer | float) -> integer | float
功能:返回参数
X
的绝对值可用函数名:abs,ABS
示例:
abs(-12.6564) = 12.6564 ABS(-16) = 16
acos(X: integer | float) -> float
功能:返回
X
的反余弦值,以弧度表示。参数X
的取值范围为[-1, 1]。可用函数名:acos,ACOS
注意事项:若X不在[-1, 1]范围内,返回字符串
"NaN"
。示例:
acos(0.5) = 1.0471975511965979 acos(-0.8) = 2.498091544796509 acos(2) = "NaN"
ACOSH(X: integer | float) -> float
功能:返回
X
的反双曲余弦值,以弧度表示。参数X
必须大于等于 1。可用函数名: ACOSH
示例:
ACOSH(2.5) = 1.566799236972411
asin(X: integer | float) -> float
功能:返回
X
的反正弦值,以弧度表示。X
的取值范围为[-1, 1]。可用函数名: asin,ASIN
注意事项:若参数
X
不在[-1, 1]范围,返回字符串"NaN"
。示例:
asin(-0.4) = -0.41151684606748806 asin(2) = "NaN"
ASINH(X: integer | float) -> float
功能:返回
X
的反双曲正弦值。可用函数名:ASINH
示例:
ASINH(0.5) = 0.48121182505960347
atan(X: integer | float) -> float
功能:返回
X
的反正切值。可用函数名:atan,ATAN
示例:
atan(3) = 1.2490457723982544
ATANH(X: integer | float) -> float
功能:返回
X
的反双曲正切值,X
的取值范围为(-1, 1)。可用函数名:ATANH
示例:
ATANH(0.5) = 0.5493061443340548
ceil(X: integer | float) -> integer | float
功能:向上舍入,返回大于等于参数
X
的最小整数。参数
X
为integer
类型时,返回值为integer
类型。参数
X
为float
类型时,返回值为float
类型。
可用函数名:ceil,CEIL
示例:
ceil(2.3) = 3.0 ceil(5) = 5
cos(X: integer | float) -> float
功能:返回角度
X
(以弧度表示)的余弦值。可用函数名: cos,COS
示例:
cos(3.14) = -0.9999987317275395
COSH(X: integer | float) -> float
功能:返回
X
的双曲余弦值。可用函数名:COSH
示例:
COSH(0.5) = 1.1276259652063807
exp(X: integer | float) -> float
功能:返回自然常数
的X次方,即
。可用函数名:exp,EXP
示例:
exp(1) = 2.7182818284590455
floor(X: integer | float) -> integer | float
功能:向下舍入,返回小于等于参数
X
的最大整数。参数
X
为integer
类型时,返回值为integer
类型。参数
X
为float
类型时,返回值为float
类型。
可用函数名:floor,FLOOR
示例:
floor(1.3) = 1.0 floor(7) = 7
mod(X: integer | float, Y: integer | float) -> float
功能:以返回
X
除以Y
的余数。若参数X
和Y
均为整数,则返回整数;若存在至少一个参数为浮点数,则返回浮点数。可用函数名:mod,MOD
示例:
mod(6, 2.4) = 1.2 mod(6, 4) = 2
ln(X: integer | float) -> float
功能:返回数字
X
的自然对数,X
必须大于0。可用函数名:ln,LN
示例:
ln(5) = 1.6094379124341003
log10(X: integer | float) -> float
功能:返回数字
X
以10为底的对数,X
必须大于0。可用函数名:log10,LOG10
示例:
log10(20) = 1.301029995663981
LOG2(X: integer | float) -> float
功能:返回数字
X
以2为底的对数,X
必须大于0。可用函数名:LOG2
示例:
LOG2(8.5) = 3.0874628412503395
round(X: integer | float) -> float
功能:对数字
X
进行四舍五入,返回最接近的整数。若参数
X
为整数,则返回值为整数。若参数
X
为小数,则返回值为小数。
可用函数名:round,ROUND
示例:
round(4.50) = 5.0 round(4.49) = 4.0 round(6) = 6
power(X: integer | float, Y: integer | float) -> float
功能:返回基数
X
的指数Y
次幂,即
。可用函数名:power,POWER
注意事项:若参数
X
为0且参数Y
为负数,返回值为字符串"Infinity"
。示例:
power(2.5, 2) = 6.25 power(0, -1) = "Infinity"
rand(X: integer) -> float
功能:返回一个随机浮点数,范围是[0, 1)。随机种子
X
必须是整数。可用函数名:rand,RAND
注意事项:在同一次SQL执行里以无参数形式调用
rand()
会得到相同的随机值,但若在括号里传入整数参数来作为随机种子,则可以根据随机种子得到不同的随机值。示例:
rand() = 0.17052297641593828 rand(3) = 0.5309714524754863
sin(X: integer | float) -> float
功能:返回角度
X
(以弧度表示)的正弦值。可用函数名:sin,SIN
示例:
sin(1) = 0.8414709848078965
SINH(X: integer | float) -> float
功能:返回
X
的双曲正弦值。可用函数名:SINH
示例:
SINH(0.5) = 0.5210953054937474
sqrt(X: integer | float) -> float
功能:返回数字
X
的平方根。可用函数名:sqrt,SQRT
注意事项:若参数
X
是负数,则返回值为字符串"NaN"
。示例:
sqrt(5) = 2.23606797749979 sqrt(-2) = "NaN"
tan(X: integer | float) -> float
功能:返回角度
X
(以弧度表示)的正切值。可用函数名:tan,TAN
示例:
tan(3.2) = 0.058473854459578645
TANH(X: integer | float) -> float
功能:返回
X
的双曲正切值。可用函数名:TANH
示例:
TANH(0.5) = 0.46211715726000974
数据类型转换函数
在规则引擎中,使用CAST
函数进行数据的类型转换。
可用函数名:cast,CAST
cast((Term: boolean | integer | string) as boolean) -> boolean
功能:将
Term
转换为boolean
类型。注意事项:当前版本下,若
Term
为integer
类型,则返回值始终为false
。示例:
cast('true' as boolean) = true cast(false as boolean) = false cast(0 as boolean) = false cast(1 as boolean) = false
cast((Term: float | integer | string) as float) -> float
功能:将
Term
转换为float
类型。(double
类型用法与float
相同)。示例:
cast(5 as float) = 5.0 cast('3.14e+4' as float) = 31400.0 cast('2.6' as float) = 2.6 cast(1.2 as float) = 1.2
cast((Term: float | integer | string) as decimal(x, y)) -> decimal
功能:将
Term
转换为decimal
类型,decimal(x, y)
中的x
表示可存储的数字数量,y
表示小数点后的最大位数。示例:
cast(5 as decimal(6, 3)) = 5.0 cast('7.2' as decimal(6, 3)) = 7.2 cast('2.6543' as decimal(6, 3)) = 2.654 cast(1.2 as decimal(5, 2)) = 1.2 cast(3.123 as decimal(5, 2)) = 3.12
cast((Term: float | integer | string) as int) -> integer
功能:将
Term
转换为integer
类型。注意事项:若
Term
为string
类型,则只有当Term
存储的是整数字符串时才可转换成功,Term
存储小数字符串时会转换失败。示例:
cast(1 as int) = 1 cast('2' as int) = 2 cast(3.6 as int) = 3 cast('4.1' as int) = 转换失败
cast((Term: float | integer | string | boolean) as varchar) -> string
功能:将Term
转换为string
类型。
示例:
cast(5.32 as varchar) = "5.32" cast('abc23' as varchar) = "abc23" cast(-13 as varchar) = "-13" cast(true as varchar) = "TRUE"
JSON取值函数
JSON_VALUE(Source: string, Path: string) -> string
功能:以JSON规则解析
Source
字符串,根据Path
中的路径提取Source
中的基本类型值。是JSON输入模式下,获取payload
中基本类型变量值必须使用的函数。可用函数名:JSON_VALUE,json_value
注意事项:
Path
中的路径必须以美元符号($)起始(象征顶层JSON对象),通过半角句号(.)进行嵌套访问。如Source
为payload
,Path 为"$.person.age"
时,等价于在非JSON模式下获取"payload.person.age"
。Path
中可以通过方括号 ([ ]) 获取数组元素,数组下标从0开始。只能在最终结果为基本类型时才可使用。
JSON_VALUE 返回值类型为字符串。若返回值与其它数字进行了运算,则返回值会自动转换为对应类型;直接输出返回值时,字段类型为字符串。若需要获取指定类型的值,请使用CAST函数进行转换。
JSON模式下,
payload
基本类型提取方式示例:JSON_VALUE(payload, '$.name') = "alice" JSON_VALUE(payload, '$.info.house.size') = 120.8 JSON_VALUE(payload, '$.skills[1]') = "eat"
JSON_QUERY(Source: string, Path: string) -> string
功能:以JSON规则解析
Source
字符串,根据Path
中的路径提取Source
中的非基本类型值。是JSON输入模式下,获取payload
中非基本类型变量(嵌套类型)必须使用的函数。可用函数名:JSON_QUERY,json_query
注意事项:
Path
中的路径必须以美元符号($)起始(象征顶层JSON对象),通过半角句号(.)进行嵌套访问。如Source
为payload
,Path
为"$.person.age"
时,等价于在非JSON模式下获取"payload.person.age"
。Path
中可以通过方括号 ([ ]) 获取数组元素,数组下标从0开始。只能在最终结果为非基本类型时才可使用。在JSON模式下,这主要意味着array和object类型。
JSON_QUERY的返回值在SQL的执行过程中为字符串类型,其仅在直接成为最终输出结果的字段时,才会被解析为array或object类型。
JSON模式下,
payload
非基本类型提取方式示例:JSON_QUERY(payload, '$.numbers') = [ 4, 6, 9, 131, 65536 ] JSON_QUERY(payload, '$.skills') = [ "run", "eat", "swim", "jump" ] JSON_QUERY(payload, '$.info.house') = { "name" : "villa", "size" : 120.8, "years" : 5, "details" : { "rooms" : 12, "toilet" : [ "brush", "toothpaste", "water", "toothbrush" ] } }
字符串操作函数
ascii(Char: string) -> integer
功能:返回字符
Char
对应的ASCII编号,如果Char
包含多个字符,仅返回第一个字符的ASCII码。可用函数名:ascii,ASCII
注意事项:若参数为
null
,则返回值也为null
。示例:
ascii('b') = 98 ascii('b21') = 98
CONCAT(Str1: string, Str2: string) -> string
功能:将
Str1
和Str2
连接为一个字符串。可用函数名:CONCAT
注意事项:若
Str1
,Str2
中至少一个为null
,则返回值为null
。示例:
CONCAT('hello', 'world') = "helloworld"
'Str1' || 'Str2' -> string
功能:将
Str1
和Str2
连接为一个字符串。注意事项:若
Str1
,Str2
中至少一个为null
,则返回值为null
。示例:
('abc' || 'xyz123') = "abcxyz123"
find(String: string, SearchPattern: string, Direction: string) -> string
功能:在原串
String
中查找子串SearchPattern
出现的位置,删除String
中SearchPattern
出现位置之前的所有内容,并返回字符串的其余部分。若未找到合适的匹配,则返回空字符串。可以使用Direction
参数指定查找子串SearchPattern
的方向。Direction
为'leading'
时,表示从前往后查找;Direction
为'trailing'
时,表示从后往前查找。可用函数名:find
注意事项:第1个参数为
null
时,会返回空字符串;第2个参数为null
时,会返回与第1个参数相同的字符串。示例:
find('hello world hellos', 'll', 'leading') = "llo world hellos" find('hello world hellos', 'll', 'trailing') = "llos"
join_to_string(Sep: string, Array: array) -> string
功能:将数组
Array
中的所有元素连接成一个字符串,元素之间使用Sep
分隔。可用函数名:join_to_string
注意事项:不能把执行JSON_QUERY函数得到的array对象填入
Array
参数。因为在执行SQL的中间状态里,JSON_QUERY的结果为字符串。示例:
join_to_string(';', ARRAY[1, 2, 3]) = "1;2;3"
lower(String: string) -> string
功能:将字符串
String
中的大写字母转换为小写字母。可用函数名:lower,LOWER
示例:
lower('Hello') = "hello"
LTRIM(String: string) -> string
功能:删除字符串
String
左侧的空格,不包含制表符\t
和换行符\r
、\n
。可用函数名:LTRIM
示例:
LTRIM(' hello alice ') = "hello alice "
ltrim_all(String: string) -> string
功能:删除字符串
String
左侧的空格、制表符\t
和换行符\r
、\n
。可用函数名:ltrim_all
示例:
ltrim_all(' \t \r \n hello alice \t \n ') = "hello alice \t \n "
RPAD(String: string, Length: integer) -> string
功能:给
String
填充后继(右侧)空格,使其达到指定长度Length
。可用函数名:RPAD
注意事项:若参数
String
为null
,则返回值为null
。示例:
RPAD('hello', 8) = "hello "
LPAD(String: string, Length: integer) -> string
功能:给
String
填充前导(左侧)空格,使其达到指定长度Length
。可用函数名:LPAD
注意事项:若参数
String
为null
,则返回值为null
。示例:
LPAD('hello', 9) = " hello"
RPAD(String: string, Length: integer, Char: string) -> string
功能:使用参数
Char
中的字符串,填充在String
的后继(右侧)位置,使其达到Length
值的长度。可用函数名:RPAD
注意事项:若传入了
Char
参数,则不允许Char
的长度小于1或为null
。示例:
RPAD('hello', 9, '1') = "hello1111" RPAD('hello', 9, '123') = "hello1231"
LPAD(String: string, Length: integer, Char: string) -> string
功能:使用参数
Char
中的字符串,填充在String
的前导(左侧)位置,使其达到Length
值的长度。可用函数名:LPAD
注意事项:若传入了
Char
参数,则不允许Char
的长度小于1或为null
。示例:
LPAD('hello', 9, '2') = "2222hello" LPAD('hello', 10, '123') = "12312hello"
('String' SIMILAR TO 'Expression') | String: string, Expression: string -> boolean
功能:判断字符串
String
是否与正则表达式Expression
匹配。可用函数名:similar to,SIMILAR TO
示例:
('d123w' SIMILAR TO '^d[\d]+w') = true ('d123' SIMILAR TO '^d[\d]+w') = false
REGEXP_REPLACE(String: string, Expression: string, Replacement: string) -> string
功能:使用字符串
Replacement
替换String
中与正则表达式Expression
匹配的部分。如果未找到匹配部分,则返回初始输入的String
。可用函数名:REGEXP_REPLACE
示例:
REGEXP_REPLACE('hello 123', '\d+', 'world') = "hello world"
REGEXP_EXTRACT_ALL(String: string, Expression: string) -> array
功能:在字符串
String
中进行搜索,查找匹配正则表达式Expression
的模式。如果找到匹配项,将返回这些匹配项的列表。如果没有找到匹配项或没有捕获到任何组,返回一个空列表。可用函数名:REGEXP_EXTRACT_ALL
示例:
REGEXP_EXTRACT_ALL('Number: 12345, 67890', '\d+') = [ "12345", "67890" ] REGEXP_EXTRACT_ALL('Number: abcd, efgh', '\d+') = [ ]
replace(String: string, SearchPattern: string, Replacement: string) -> string
功能:将
String
中的所有与SearchPattern
匹配的字串替换为Replacement
,按照从前往后的顺序逐个替换。可用函数名:replace,REPLACE
示例:
replace('aaaaa', 'aa', 'xyz') = "xyzxyza" replace('abcabc', 'a', '3') = "3bc3bc"
replace_direct(String: string, SearchPattern: string, Replacement: string, Where: string) -> string
功能:将
String
中的所有与SearchPattern
匹配的字串替换为Replacement
,通过Where
的取值决定替换前导、后继还是所有匹配字符串。可用函数名:replace_direct
注意事项:改变
Where
参数的值,可以替换字符串不同位置的字串。Where
参数为"all"
或null
时,表示替换所有出现的SearchPattern
为Replacement
。Where
参数为"leading"
时,表示仅替换第一次出现的SearchPattern
。Where
参数为"trailing"
时,表示仅替换最后一次出现的SearchPattern
。
示例:
replace_direct('hello world hello', 'hello', 'bye', 'all') = "bye world bye" replace_direct('hello world hello', 'hello', 'bye', 'leading') = "bye world hello" replace_direct('hello world hello', 'hello', 'bye', 'trailing') = "hello world bye"
REVERSE(String: string) -> string
功能:反转字符串
String
。可用函数名:REVERSE
示例:
REVERSE('abcdef') = "fedcba"
rm_prefix(String: string, Prefix: string) -> string
功能:从字符串
String
中删除前缀Prefix
。函数会逐个比对String
和Prefix
的前缀字符,并删除String成功匹配上的前缀。若前缀长度超过原串且完全成功匹配,则返回空字符串。
若仅部分字符成功匹配,返回去除相同字符后的字符串。
若无字符匹配,返回原字符串。
可用函数名:rm_prefix
示例:
rm_prefix('hello world', 'hell') = "o world" rm_prefix('hello world', 'xyz') = "hello world" rm_prefix('hello', 'helloworld') = ""
RTRIM(String: string) -> string
功能:删除字符串
String
右侧的空格,不包含制表符\t
和换行符\r
、\n
。可用函数名:RTRIM
示例:
RTRIM(' hello ') = " hello"
rtrim_all(String: string) -> string
功能:删除字符串
String
右侧的空格、制表符\t
和换行符\r
、\n
。可用函数名:rtrim_all
示例:
rtrim_all(' \t \r \n hello alice \t \r \n ') = " \t \r \n hello alice"
SPLIT(String: string, Separator: string) -> array
功能:基于分隔符
Separator
将字符串String
分割成子字符串,并返回一个由这些子字符串组成的数组。可用函数名:SPLIT
示例:
SPLIT('abcd','t') = [ "abcd" ] SPLIT('abcde','c') = [ "ab", "de" ] SPLIT('ab;;de',';') = [ "ab", "", "de" ]
split(String: string, Separator: string, Option: string) -> array
功能:基于分隔符
Separator
将字符串String
分割成子字符串,并返回一个由这些子字符串组成的数组。可通过Option
参数指定需要使用的分隔符的位置,以及是否需要返回空字符串。Option
取值:notrim:处理字符串中的所有分隔符,返回的结果中可能包含空字符串。
leading:仅处理前导的分隔符,返回的结果中不包含空字符串。
leading_notrim:仅处理前导的分隔符,返回的结果中可能包含空字符串。
trailing:仅处理尾随的分隔符,返回的结果中不包含空字符串。
trailing_notrim:仅处理尾随的分隔符,返回的结果中可能包含空字符串。
可用函数名:split
示例:
split('abc;;xyz;jkl;;imf;', ';', 'notrim') = [ "abc", "", "xyz", "jkl", "", "imf", "" ] split('abc;;xyz;jkl;;imf;', ';', 'leading') = [ "abc", ";xyz;jkl;;imf;" ] split('abc;;xyz;jkl;;imf;', ';', 'leading_notrim') = [ "abc", ";xyz;jkl;;imf;" ] split('abc;;xyz;jkl;;imf;', ';', 'trailing') = [ "abc;;xyz;jkl;;imf" ] split('abc;;xyz;jkl;;imf;', ';', 'trailing_notrim') = [ "abc;;xyz;jkl;;imf", "" ]
LENGTH(String: string) -> integer
功能:返回字符串
String
的长度。可用函数名:LENGTH,char_length,CHAR_LENGTH
注意事项:若传入的
String
为null
,则返回值也为null
。示例:
LENGTH('') = 0 LENGTH('abc') = 3
SUBSTR(String: string, Start: integer) -> string
功能:返回
String
中从位置Start
开始到字符串末尾的所有字符。第1个字符的下标为1。当
Start
等于0时,会返回原本的String
。当
Start
小于0时,会返回后abs(Start)
个字符组成的字符串。
可用函数名:SUBSTR
示例:
SUBSTR('abcdefg', 8) = "" SUBSTR('abcdefg', 7) = "g" SUBSTR('abcdefg', 3) = "cdefg" SUBSTR('abcdefg', 0) = "abcdefg" SUBSTR('abcdefg', -3) = "efg" SUBSTR('abcdefg', -10) = "abcdefg"
SUBSTR(String: string, Start: integer, Length: integer) -> string
功能:返回
String
中从下标Start
开始到下标Start+Length-1
之间的所有字符。第1个字符的下标为1。可用函数名:SUBSTR
示例:
SUBSTR('abcdefg', 3, 4) = "cdef" SUBSTR('abcdefg', 3, -1) = "" SUBSTR('abcdefg', 3, 7) = "cdefg" SUBSTR('abcdefg', 1, 2) = "ab" SUBSTR('abcdefg', -4, 2) = "de" SUBSTR('abcdefg', -4, 3) = "def"
tokens(String: string, SeparatorList: string) -> array
功能:返回以
String
被SeparatorList
中的字符分割后的子串为元素的列表。可用函数名:tokens
示例:
tokens('ab;cd,ef;gh', ';,') = [ "ab", "cd", "ef", "gh" ] tokens('ab;cd,ef;gh', null) = [ "ab;cd,ef;gh" ]
tokens_nocrlf(String: string, SeparatorList:string, NoCRLF: string) -> array
功能:返回以
String
被SeparatorList
中的字符分割后的子串为元素的列表。当第 3 个参数
NoCRLF
非空时,会将换行符加入分割标志符集合。第 3 个参数为
null
或空字符串时,将基于SeparatorList
中的字符进行分割。可用函数名:tokens_nocrlf
示例:
tokens_nocrlf('ab;c\nd,ef\r\n;g\rh', ';,', 'yes') = [ "ab", "c", "d", "ef", "g", "h" ]
trim(String: string) -> string
功能:删除字符串
String
中前导和后继的空格符,不包含制表符\t
和换行符\r
、\n
。可用函数名:trim
示例:
trim(' abc ') = "abc"
upper(String: string) -> string
功能:将字符串
String
中的小写字母转换为大写字母。可用函数名:upper,UPPER
示例:
upper('Hello') = "HELLO"
mqttMatch(OriginalTopic: String, ExpectTopic: String) -> boolean
功能:判断
OriginalTopic
是否可以与ExpectTopic
匹配。OriginalTopic
不含通配符,ExpectTopic
含有通配符。当FROM
子句中数据源为事件,且仍需基于Topic的通配符校验结果来进行过滤时,建议在WHERE子句中使用本函数。可用函数名:mqttMatch
示例:
mqttMatch('test/a', 'test/#') = true mqttMatch('test/a/b', 'test/+/b/#') = true mqttMatch('test/a/b', 'test/#') = true mqttMatch('test/a/b', 'test/+') = false
哈希函数
MD5(String: string) -> string
功能:为任意长度字符串
String
计算长度固定为128位的MD5散列值。该散列值将以32个十六进制数字组成的文本形式返回。返回字符串中的字母固定为小写形式(a ~ f)。可用函数名:MD5
示例:
MD5('hello') = "5d41402abc4b2a76b9719d911017c592" MD5('world') = "7d793037a0760186574b0282f2f435e7"
SHA1(String: string) -> string
功能:使用SHA-1算法为任意长度字符串
String
计算长度固定为160位的SHA散列值。该散列值将以40个十六进制数字组成的文本形式返回。返回字符串中的字母固定为小写形式(a ~ f)。可用函数名:SHA1
示例:
SHA1('hello') = "aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d" SHA1('world') = "7c211433f02071597741e6ff5a8ea34789abbf43"
SHA256(String: string) -> string
功能:使用SHA-256算法为任意长度字符串
String
计算长度固定为256位的SHA散列值。该散列值将以64个十六进制数字组成的文本形式返回。返回字符串中的字母固定为小写形式(a ~ f)。可用函数名:SHA256
示例:
SHA256('hello') = "2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824" SHA256('world') = "486ea46224d1bb4fb680f34f7c9ad96a8f24ec88be73ea8e5a6c65260e9cb8a7"
比特位操作函数
BITAND(Num1: integer, Num2: integer) -> integer
功能:返回
Num1
和Num2
的按位与结果。可用函数名:BITAND
示例:
BITAND(7, 11) = 3 BITAND(-7, -11) = -15
BITNOT(Num: integer) -> integer
功能:返回
Num
的按位取反结果。可用函数名:BITNOT
示例:
BITNOT(5) = -6 BITNOT(-5) = 4
BITOR(Num1: integer, Num2: integer) -> integer
功能:返回
Num1
和Num2
的按位或结果。可用函数名:BITOR
示例:
BITOR(5, 9) = 13 BITOR(-5, -9) = -1
BITXOR(Num1: integer, Num2: integer) -> integer
功能:返回
Num1
和Num2
的按位异或结果。可用函数名:BITXOR
示例:
BITXOR(10, 3) = 9 BITXOR(-10, -3) = 11
位序列操作函数
BIT_LENGTH(Bin: binary) -> integer
功能:返回位序列
Bin
的比特位数。可用函数名:BIT_LENGTH
示例:
BIT_LENGTH('alice') = 40 BIT_LENGTH(_utf8'你好') = 48 BIT_LENGTH(21) = 16 BIT_LENGTH(421) = 24 BIT_LENGTH(8.22) = 32
OCTET_LENGTH(Bin: binary) -> integer
功能:返回字节序列
Bin
的字节数。可用函数名:OCTET_LENGTH
示例:
OCTET_LENGTH('abc') = 3 OCTET_LENGTH(_utf8'你好') = 6
编解码函数
BASE64(Data: binary | string) -> string
功能:对
Data
进行Base64编码。可用函数名:BASE64
示例:
BASE64('alice') = "YWxpY2U="
BASE64ToUTF8(Data: string) -> string
功能:将Base64编码的字符串转换为
Utf8
字符串。适合用于在None Schema模式下解析payload
内容。可用函数名:BASE64ToUTF8
示例:
BASE64ToUTF8('YWxpY2U=') = "alice"
日期与时间函数
CURRENT_TIMESTAMP -> BigInt
功能:返回当前系统时间戳,以毫秒为单位。
可用函数名:CURRENT_TIMESTAMP
注意事项:若希望将时间戳转换为表示时间的字符串,可以使用
cast
函数转换为varchar
格式,得到所需值。示例:
(CURRENT_TIMESTAMP) = 1753845411166 cast(CURRENT_TIMESTAMP as varchar) = "2025-07-30 11:16:51"