SQL 语句中可用的函数

数学函数

函数名函数作用参数返回值
abs绝对值
  1. 被操作数
绝对值
cos余弦
  1. 被操作数
余弦值
cosh双曲余弦
  1. 被操作数
双曲余弦值
acos反余弦
  1. 被操作数
反余弦值
acosh反双曲余弦
  1. 被操作数
反双曲余弦值
sin正弦
  1. 被操作数
正弦值
sinh双曲正弦
  1. 被操作数
双曲正弦值
asin反正弦
  1. 被操作数
asinh反双曲正弦
  1. 被操作数
反双曲正弦值
tan正切
  1. 被操作数
正切值
tanh双曲正切
  1. 被操作数
双曲正切值
atan反正切
  1. 被操作数
反正切值
atanh反双曲正切
  1. 被操作数
反双曲正切值
ceil上取整
  1. 被操作数
整数值
floor下取整
  1. 被操作数
整数值
round四舍五入
  1. 被操作数
整数值
exp幂运算
  1. 被操作数
e 的 x 次幂
power指数运算
  1. 左操作数 x 2. 右操作数 y
x 的 y 次方
sqrt平方根运算
  1. 被操作数
平方根
fmod负点数取模函数
  1. 左操作数 2. 右操作数
log以 e 为底对数
  1. 被操作数
log10以 10 为底对数
  1. 被操作数
log2以 2 为底对数
  1. 被操作数

数据类型判断函数

函数名函数作用参数返回值
is_null判断变量是否为空值
  1. Data
Boolean 类型的数据。如果为空值(undefined) 则返回 true,否则返回 false
is_not_null判断变量是否不为空值
  1. Data
Boolean 类型的数据。如果为空值(undefined) 则返回 true,否则返回 false
is_str判断变量是否为 String 类型
  1. Data
Boolean 类型的数据。
is_bool判断变量是否为 Boolean 类型
  1. Data
Boolean 类型的数据。
is_int判断变量是否为 Integer 类型
  1. Data
Boolean 类型的数据。
is_float判断变量是否为 Float 类型
  1. Data
Boolean 类型的数据。
is_num判断变量是否为数字类型,包括 Integer 和 Float 类型
  1. Data
Boolean 类型的数据。
is_map判断变量是否为 Map 类型
  1. Data
Boolean 类型的数据。
is_array判断变量是否为 Array 类型
  1. Data
Boolean 类型的数据。

数据类型转换函数

函数名函数作用参数返回值
str将数据转换为 String 类型
  1. Data
String 类型的数据。无法转换将会导致 SQL 匹配失败
str_utf8将数据转换为 UTF-8 String 类型
  1. Data
UTF-8 String 类型的数据。无法转换将会导致 SQL 匹配失败
bool将数据转换为 Boolean 类型
  1. Data
Boolean 类型的数据。无法转换将会导致 SQL 匹配失败
int将数据转换为整数类型
  1. Data
整数类型的数据。无法转换将会导致 SQL 匹配失败
float将数据转换为浮点型类型
  1. Data
浮点型类型的数据。无法转换将会导致 SQL 匹配失败
map将数据转换为 Map 类型
  1. Data
Map 类型的数据。无法转换将会导致 SQL 匹配失败

字符串函数

函数名函数作用参数返回值举例
lower转为小写1. 原字符串小写字符串1. lower(‘AbC’) = ‘abc’

2. lower(‘abc’) = ‘abc’
upper转为大写1. 原字符串大写字符串1. upper(‘AbC’) = ‘ABC’

2. lower(‘ABC’) = ‘ABC’
trim去掉左右空格1. 原字符串去掉空格后的字符串1. trim(‘ hello ‘) = ‘hello’
ltrim去掉左空格1. 原字符串去掉空格后的字符串1. ltrim(‘ hello ‘) = ‘hello ‘
rtrim去掉右空格1. 原字符串去掉空格后的字符串1. rtrim(‘ hello ‘) = ‘ hello’
reverse字符串反转1. 原字符串翻转后的字符串1. reverse(‘hello’) = ‘olleh’
strlen取字符串长度1. 原字符串整数值,字符长度1. strlen(‘hello’) = 5
substr取字符的子串1. 原字符串 2. 起始位置. 注意: 下标从 0 开始子串1. substr(‘abcdef’, 2) = ‘cdef’
substr取字符的子串1. 原字符串 2. 起始位置 3. 要取出的子串长度. 注意: 下标从 0 开始子串1. substr(‘abcdef’, 2, 3) = ‘cde’
split字符串分割1. 原字符串 2. 分割符子串分割后的字符串数组1. split(‘a/b/ c’, ‘/‘) = [‘a’, ‘b’, ‘ c’]
split字符串分割, 只查找左边第一个分隔符1. 原字符串 2. 分割符子串 3. ‘leading’分割后的字符串数组1. split(‘a/b/ c’, ‘/‘, ‘leading’) = [‘a’, ‘b/ c’]
split字符串分割, 只查找右边第一个分隔符1. 原字符串 2. 分割符子串 3. ‘trailing’分割后的字符串数组1. split(‘a/b/ c’, ‘/‘, ‘trailing’) = [‘a/b’, ‘ c’]
concat字符串拼接1. 左字符串 2. 右符子串拼接后的字符串1. concat(‘a’, ‘/bc’) = ‘a/bc’

2. ‘a’ + ‘/bc’ = ‘a/bc’
tokens字符串分解(按照指定字符串符分解)1. 输入字符串 2. 分割符或字符串分解后的字符串数组1. tokens(‘ a/b/ c’, ‘/‘) = [‘ a’, ‘b’, ‘ c’]

2. tokens(‘ a/b/ c’, ‘/ ‘) = [‘a’, ‘b’, ‘c’]

3. tokens(‘ a/b/ c\n’, ‘/ ‘) = [‘a’, ‘b’, ‘c\n’]
tokens字符串分解(按照指定字符串和换行符分解)1. 输入字符串 2. 分割符或字符串 3. ‘nocrlf’分解后的字符串数组1. tokens(‘ a/b/ c\n’, ‘/ ‘, ‘nocrlf’) = [‘a’, ‘b’, ‘c’]

2. tokens(‘ a/b/ c\r\n’, ‘/ ‘, ‘nocrlf’) = [‘a’, ‘b’, ‘c’]
sprintf字符串格式化, 格式字符串的用法详见 https://erlang.org/doc/man/io.html#fwrite-1 里的 Format 部分1. 格式字符串 2,3,4… 参数列表。参数个数不定分解后的字符串数组1. sprintf(‘hello, ~s!’, ‘steve’) = ‘hello, steve!’

2. sprintf(‘count: ~p~n’, 100) = ‘count: 100\n’
pad字符串补足长度,补空格,从尾部补足1. 原字符串 2. 字符总长度补足后的字符串1. pad(‘abc’, 5) = ‘abc ‘
pad字符串补足长度,补空格,从尾部补足1. 原字符串 2. 字符总长度 3. ‘trailing’补足后的字符串1. pad(‘abc’, 5, ‘trailing’) = ‘abc ‘
pad字符串补足长度,补空格,从两边补足1. 原字符串 2. 字符总长度 3. ‘both’补足后的字符串1. pad(‘abc’, 5, ‘both’) = ‘ abc ‘
pad字符串补足长度,补空格,从头部补足1. 原字符串 2. 字符总长度 3. ‘leading’补足后的字符串1. pad(‘abc’, 5, ‘leading’) = ‘ abc’
pad字符串补足长度,补指定字符,从尾部补足1. 原字符串 2. 字符总长度 3. ‘trailing’ 4. 指定用于补足的字符补足后的字符串1. pad(‘abc’, 5, ‘trailing’, ‘‘) = ‘abc**’

2. pad(‘abc’, 5, ‘trailing’, ‘
#’) = ‘abc##’
pad字符串补足长度,补指定字符,从两边补足1. 原字符串 2. 字符总长度 3. ‘both’ 4. 指定用于补足的字符补足后的字符串1. pad(‘abc’, 5, ‘both’, ‘‘) = ‘abc

2. pad(‘abc’, 5, ‘both’, ‘
#’) = ‘#abc#’
pad字符串补足长度,补指定字符,从头部补足1. 原字符串 2. 字符总长度 3. ‘leading’ 4. 指定用于补足的字符补足后的字符串1. pad(‘abc’, 5, ‘leading’, ‘‘) = ‘**abc’

2. pad(‘abc’, 5, ‘leading’, ‘
#’) = ‘##abc’
replace替换字符串中的某子串,查找所有匹配子串替换1. 原字符串 2. 要被替换的子串 3. 指定用于替换的字符串替换后的字符串1. replace(‘ababef’, ‘ab’, ‘cd’) = ‘cdcdef’
replace替换字符串中的某子串,查找所有匹配子串替换1. 原字符串 2. 要被替换的子串 3. 指定用于替换的字符串 4. ‘all’替换后的字符串1. replace(‘ababef’, ‘ab’, ‘cd’, ‘all’) = ‘cdcdef’
replace替换字符串中的某子串,从尾部查找第一个匹配子串替换1. 原字符串 2. 要被替换的子串 3. 指定用于替换的字符串 4. ‘trailing’替换后的字符串1. replace(‘ababef’, ‘ab’, ‘cd’, ‘trailing’) = ‘abcdef’
replace替换字符串中的某子串,从头部查找第一个匹配子串替换1. 原字符串 2. 要被替换的子串 3. 指定用于替换的字符串 4. ‘leading’替换后的字符串1. replace(‘ababef’, ‘ab’, ‘cd’, ‘leading’) = ‘cdabef’
regex_match判断字符串是否与某正则表达式匹配1. 原字符串 2. 正则表达式true 或 false1. regex_match(‘abc123’, ‘[a-zA-Z1-9]*’) = true
regex_replace替换字符串中匹配到某正则表达式的子串1. 原字符串 2. 正则表达式 3. 指定用于替换的字符串替换后的字符串1. regex_replace(‘ab1cd3ef’, ‘[1-9]’, ‘[&]’) = ‘ab[1]cd[3]ef’

2. regex_replace(‘ccefacef’, ‘c+’, ‘:’) = ‘:efa:ef’
ascii返回字符对应的 ASCII 码1. 字符整数值,字符对应的 ASCII 码1. ascii(‘a’) = 97
find查找并返回字符串中的某个子串,从头部查找1. 原字符串 2. 要查找的子串查抄到的子串,如找不到则返回空字符串1. find(‘eeabcabcee’, ‘abc’) = ‘abcabcee’
find查找并返回字符串中的某个子串,从头部查找1. 原字符串 2. 要查找的子串 3. ‘leading’查抄到的子串,如找不到则返回空字符串1. find(‘eeabcabcee’, ‘abc’, ‘leading’) = ‘abcabcee’
find查找并返回字符串中的某个子串,从尾部查找1. 原字符串 2. 要查找的子串 3. ‘trailing’查抄到的子串,如找不到则返回空字符串1. find(‘eeabcabcee’, ‘abc’, ‘trailing’) = ‘abcee’

Map 函数

函数名函数作用参数返回值
map_get取 Map 中某个 Key 的值,如果没有则返回空值
  1. Key 2. Map
Map 中某个 Key 的值。支持嵌套的 Key,比如 “a.b.c”
map_get取 Map 中某个 Key 的值,如果没有则返回指定默认值
  1. Key 2. Map 3. Default Value
Map 中某个 Key 的值。支持嵌套的 Key,比如 “a.b.c”
map_put向 Map 中插入值
  1. Key 2. Value 3. Map
插入后的 Map。支持嵌套的 Key,比如 “a.b.c”

数组函数

函数名函数作用参数返回值
nth取第 n 个元素,下标从 1 开始
  1. 原数组
第 n 个元素
length获取数组的长度
  1. 原数组
数组长度
sublist取从第一个元素开始、长度为 len 的子数组。下标从 1 开始
  1. 长度 len 2. 原数组
子数组
sublist取从第 n 个元素开始、长度为 len 的子数组。下标从 1 开始
  1. 起始位置 n 2. 长度 len 3. 原数组
子数组
first取第 1 个元素。下标从 1 开始
  1. 原数组
第 1 个元素
last取最后一个元素。
  1. 原数组
最后一个元素
contains判断数据是否在数组里面
  1. 数据 2. 原数组
Boolean 值

哈希函数

函数名函数作用参数返回值
md5求 MD5 值
  1. 数据
MD5 值
sha求 SHA 值
  1. 数据
SHA 值
sha256求 SHA256 值
  1. 数据
SHA256 值

编解码函数

函数名函数作用参数返回值
base64_encodeBASE64 编码
  1. 数据
BASE64 字符串
base64_decodeBASE64 解码
  1. BASE64 字符串
数据
json_encodeJSON 编码
  1. JSON 字符串
内部 Map
json_decodeJSON 解码
  1. 内部 Map
JSON 字符串
schema_encodeSchema 编码
  1. Schema ID 2. 内部 Map
数据
schema_encodeSchema 编码
  1. Schema ID 2. 内部 Map 3. Protobuf Message 名
数据
schema_decodeSchema 解码
  1. Schema ID 2. 数据
内部 Map
schema_decodeSchema 解码
  1. Schema ID 2. 数据 3. Protobuf Message 名
内部 Map