SQL 语句中可用的函数

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) 则返回 false,否则返回 true
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 或 false| 1. 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_encode BASE64 编码
  1. 数据

| BASE64 字符串
base64_decode| BASE64 解码|

  1. BASE64 字符串

| 数据
json_encode| JSON 编码|

  1. JSON 字符串

| 内部 Map
json_decode| JSON 解码|

  1. 内部 Map

| JSON 字符串
schema_encode| Schema 编码|

  1. Schema ID 2. 内部 Map

| 数据
schema_encode| Schema 编码|

  1. Schema ID 2. 内部 Map 3. Protobuf Message 名

| 数据
schema_decode| Schema 解码|

  1. Schema ID 2. 数据

| 内部 Map
schema_decode| Schema 解码|

  1. Schema ID 2. 数据 3. Protobuf Message 名

| 内部 Map