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的最小整数。

    • 参数Xinteger类型时,返回值为integer类型。

    • 参数Xfloat类型时,返回值为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的最大整数。

    • 参数Xinteger类型时,返回值为integer类型。

    • 参数Xfloat类型时,返回值为float类型。

  • 可用函数名:floor,FLOOR

  • 示例:

    floor(1.3) = 1.0
    floor(7) = 7

mod(X: integer | float, Y: integer | float) -> float

  • 功能:以返回X除以Y的余数。若参数XY均为整数,则返回整数;若存在至少一个参数为浮点数,则返回浮点数。

  • 可用函数名: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

  • 功能:返回数字X10为底的对数,X必须大于0。

  • 可用函数名:log10,LOG10

  • 示例:

    log10(20) = 1.301029995663981

LOG2(X: integer | float) -> float

  • 功能:返回数字X2为底的对数,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

  • 注意事项:若参数X0且参数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类型。

  • 注意事项:当前版本下,若Terminteger类型,则返回值始终为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类型。

  • 注意事项:若Termstring类型,则只有当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对象),通过半角句号(.)进行嵌套访问。如Sourcepayload,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对象),通过半角句号(.)进行嵌套访问。如SourcepayloadPath"$.person.age"时,等价于在非JSON模式下获取 "payload.person.age"

    • Path中可以通过方括号 ([ ]) 获取数组元素,数组下标从0开始。

    • 只能在最终结果为非基本类型时才可使用。在JSON模式下,这主要意味着arrayobject类型。

    • JSON_QUERY的返回值在SQL的执行过程中为字符串类型,其仅在直接成为最终输出结果的字段时,才会被解析为arrayobject类型。

  • 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

  • 功能:将Str1Str2连接为一个字符串。

  • 可用函数名:CONCAT

  • 注意事项:若Str1Str2中至少一个为null,则返回值为null

  • 示例:

    CONCAT('hello', 'world') = "helloworld"

'Str1' || 'Str2' -> string

  • 功能:将Str1Str2连接为一个字符串。

  • 注意事项:若 Str1Str2中至少一个为null,则返回值为null

  • 示例:

    ('abc' || 'xyz123') = "abcxyz123"

find(String: string, SearchPattern: string, Direction: string) -> string

  • 功能:在原串String中查找子串SearchPattern出现的位置,删除StringSearchPattern出现位置之前的所有内容,并返回字符串的其余部分。若未找到合适的匹配,则返回空字符串。可以使用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

  • 注意事项:若参数 Stringnull,则返回值为null

  • 示例:

    RPAD('hello', 8) = "hello   "

LPAD(String: string, Length: integer) -> string

  • 功能:给String填充前导(左侧)空格,使其达到指定长度Length

  • 可用函数名:LPAD

  • 注意事项:若参数Stringnull,则返回值为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时,表示替换所有出现的SearchPatternReplacement

    • 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。函数会逐个比对StringPrefix的前缀字符,并删除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

  • 注意事项:若传入的Stringnull,则返回值也为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

  • 功能:返回以StringSeparatorList中的字符分割后的子串为元素的列表。

  • 可用函数名: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

  • 功能:返回以StringSeparatorList中的字符分割后的子串为元素的列表。

    当第 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

  • 功能:返回Num1Num2的按位与结果。

  • 可用函数名: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

  • 功能:返回Num1Num2的按位或结果。

  • 可用函数名:BITOR

  • 示例:

    BITOR(5, 9) = 13
    BITOR(-5, -9) = -1

BITXOR(Num1: integer, Num2: integer) -> integer

  • 功能:返回Num1Num2的按位异或结果。

  • 可用函数名: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"