Appearance
字符串相关函数
表达式中参数说明:
- expr :表达式
- columnName :字段名
ascii
对输入参数 s
求 ASCII 值,参数的值类型必须为 String,传入其他类型将报错,接收 1 个参数,返回 Int64
语法
sql
ascii(s: expr | columnName)
参数
expr
- 表达式。columnName
- 字段名或字段别名。
返回值
- 如果 s 为 NULL,返回 NULL
- 返回 Int64 类型
示例
sql
> SELECT ascii("A")
┌─ascii("A")────────────────────┐
│ 65 │
└───────────────────────────────┘
bin
将输入参数 n
转为二进制格式,参数的值类型必须为 Number,传入其他类型将报错,接收 1 个参数,返回 String
语法
sql
bin(n: expr | columnName)
参数
expr
- 表达式。columnName
- 字段名或字段别名。
返回值
- 如果 n 为 NULL,返回 NULL
- 返回 String 类型
示例
sql
> SELECT bin(127)
┌─bin(127)────────────────────┐
│ 1111111 │
└─────────────────────────────┘
concat
将参数 str...
进行连接,可接收多个参数,所有参数的值类型必须为 String,传入其他类型将报错,返回 String
语法
sql
concat(str1: expr | columnName [, str2: expr | columnName...])
参数
expr
- 表达式。columnName
- 字段名或字段别名。
返回值
- 如果任一参数为 NULL,返回 NULL
- 返回 String 类型
示例
sql
> SELECT concat("A", "B")
┌─concat("A", "B")─────────┐
│ AB │
└──────────────────────────┘
concat_ws
将参数使用 sep
进行连接,可接收多个参数,所有参数的值类型必须为 String,传入其他类型将报错,返回 String
语法
sql
concat_ws(sep: expr | columnName, str1: expr | columnName [, str2: expr | columnName...])
参数
expr
- 表达式。columnName
- 字段名或字段别名。
返回值
- 如果任一参数为 NULL,返回 NULL
- 返回 String 类型
示例
sql
> SELECT concat_ws(",", "A", "B")
┌─concat_ws(",", "A", "B")───────┐
│ A,B │
└────────────────────────────────┘
elt
从第二个参数以后得参数列表中取 nth
个值,可接收多个参数,nth
类型为 Number 或 String 类型的数字,其他参数的值类型必须为 String,传入其他类型将报错,返回 String
语法
sql
elt(nth expr | columnName, str1: expr | columnName [, str2: expr | columnName...])
参数
expr
- 表达式。columnName
- 字段名或字段别名。
返回值
- 如果任一参数为 NULL,返回 NULL
- 返回 String 类型
示例
sql
> SELECT elt(1, "A", "B")
┌─elt(1, "A", "B") ───────┐
│ A │
└─────────────────────────┘
field
获取 target
在第二个参数以后得参数列表中的位置,可接收多个参数,所有参数值类型须一致,返回 Int64,若不存在,则返回 0
语法
sql
field(target: expr | columnName, str1: expr | columnName [, str2: expr | columnName])
参数
expr
- 表达式。columnName
- 字段名或字段别名。
返回值
- 如果任一参数为 NULL,返回 NULL
- 返回 Int64 类型
示例
sql
> SELECT field("A", "B", "A")
┌─field("A", "B", "A") ─────────┐
│ 2 │
└───────────────────────────────┘
lcase/lower
将参数 s
转为小写,接收 1 个 String 参数,返回 String
语法
sql
lcase/lower(s: expr | columnName)
参数
expr
- 表达式。columnName
- 字段名或字段别名。
返回值
- 如果任一参数为 NULL,返回 NULL
- 返回 String 类型
示例
sql
SELECT lower("A"), lcase("A")
┌─lower("A") ───────┬─────lcase("A")─────┐
│ a │ a |
└───────────────────┴────────────────────┘
left
返回第一个参数 s
最左边的 N 个字符,如果 N 大于第一个参数的长度,则返回第一个参数
语法
sql
left(s: expr | columnName, N: expr | columnName)
参数
expr
- 表达式。columnName
- 字段名或字段别名。
返回值
- 如果任一参数为 NULL,返回 NULL
- 返回 String 类型
示例
sql
> SELECT left("ABCD", 2)
┌─left("ABCD", 2) ─────────┐
│ AB │
└──────────────────────────┘
right
返回第一个参数 s
最右边的 N 个字符,如果 N 大于第一个参数的长度,则返回第一个参数
语法
sql
right(s: expr | columnName, N: expr | columnName)
参数
expr
- 表达式。columnName
- 字段名或字段别名。
返回值
- 如果任一参数为 NULL,返回 NULL
- 返回 String 类型
示例
sql
> SELECT right("ABCD", 2)
┌─right("ABCD", 2)─────────┐
│ CD │
└──────────────────────────┘
length/strlen
返回传入参数 s
的字节长度,s
类型为 String,返回 Int64
语法
sql
length/strlen(s: expr | columnName)
参数
expr
- 表达式。columnName
- 字段名或字段别名。
返回值
- 如果任一参数为 NULL,返回 NULL
- 返回 Int64 类型
示例
sql
> SELECT length("ABCD"), strlen("ABCD")
┌─length("ABCD")───┬─strlen("ABCD")───┐
│ 4 │ 4 |
└──────────────────┴──────────────────┘
sql
> SELECT length("麦杰科技"), strlen("麦杰科技")
┌─length("麦杰科技")─┬─strlen("麦杰科技")───┐
│ 12 │ 12 |
└───────────────────┴────────────────────┘
locate
从第二个参数 str
中获取第一个参数 substr
的开始的位置 返回 Int64
如果 pos 不为空,则返回第二个参数 substr 从 pos 以后字符串中第一个参数 substr 开始的位置
语法
sql
locate(substr: expr | columnName, str: expr | columnName [, pos: expr | columnName])
参数
expr
- 表达式。columnName
- 字段名或字段别名。
返回值
- 如果任一参数为 NULL,返回 NULL
- 返回 Int64 类型
示例
sql
> SELECT locate("bar", "foobarbar")
┌─locate("bar", "foobarbar")─────────┐
│ 4 │
└────────────────────────────────────┘
sql
> SELECT locate("bar", "foobarbar", 5)
┌─locate("bar", "foobarbar", 5)─────────┐
│ 7 │
└───────────────────────────────────────┘
lpad
在第一个参数 str
的左边填充第三个参数 padstr
,使第一个参数 str
的长度达到第二个参数 len
,第二个参数 len
类型需为 Number,返回 String
若第二个参数 len
的值小于第一个参数 str
的长度,则返回第一个参数 str
到第二个参数 len
的值的子串
语法
sql
lpad(str: expr | columnName, len: expr | columnName, padstr: expr | columnName)
参数
expr
- 表达式。columnName
- 字段名或字段别名。
返回值
- 如果任一参数为 NULL,返回 NULL
- 返回 String 类型
示例
sql
> SELECT lpad("hi", 4, "?")
┌─lpad("hi", 4, "?")───────┐
│ ??hi │
└──────────────────────────┘
sql
> SELECT lpad("hi", 1, "?")
┌─lpad("hi", 1, "?")──────┐
│ h │
└─────────────────────────┘
ltrim
去除参数 str
左边的空格,如果传入 NULL,则返回 NULL
语法
sql
ltrim(str: expr | columnName)
参数
expr
- 表达式。columnName
- 字段名或字段别名。
返回值
- 如果任一参数为 NULL,返回 NULL
- 返回 String 类型
示例
sql
> SELECT ltrim(" foobar")
┌─ltrim(" foobar")───────┐
│ foobar │
└─────────────────────────┘
mid
从字符串 str
的 pos
位置截取长度为 len
的子字符串
语法
sql
mid(str: expr | columnName, pos: expr | columnName, len: expr | columnName)
参数
expr
- 表达式。columnName
- 字段名或字段别名。
返回值
- 如果任一参数为 NULL,返回 NULL
- 返回 String 类型
示例
sql
> SELECT mid("foobar", 2, 3)
┌─mid("foobar", 2, 3)───────┐
│ oob │
└───────────────────────────┘
oct
当 N
为 Number 时,返回 N 的八进制字符串,当传入 NULL
时,返回 NULL
语法
sql
oct(N: expr | columnName)
参数
expr
- 表达式。columnName
- 字段名或字段别名。
返回值
- 如果任一参数为 NULL,返回 NULL
- 返回 String 类型
示例
sql
> SELECT oct(100)
┌─oct(100)───────┐
│ 144 │
└────────────────┘
repeat
将字符串 s
重复 N
次
语法
sql
repeat(s: expr | columnName, N: expr | columnName)
参数
expr
- 表达式。columnName
- 字段名或字段别名。
返回值
- 如果任一参数为 NULL,返回 NULL
- 返回 String 类型
示例
sql
> SELECT repeat("AB", 2)
┌─repeat("AB", 2)───────┐
│ ABAB │
└───────────────────────┘
replace
将字符串 s2
替代字符串 s
中的字符串 s1
语法
sql
replace(s: expr | columnName, s1: expr | columnName, s2: expr | columnName)
参数
expr
- 表达式。columnName
- 字段名或字段别名。
返回值
- 如果任一参数为 NULL,返回 NULL
- 返回 String 类型
示例
sql
> SELECT replace("magus", "a", "8")
┌─replace("magus", "a", "8")───────┐
│ m8gus │
└──────────────────────────────────┘
reverse
将字符串 s
的顺序翻转
语法
sql
reverse(s: expr | columnName)
参数
expr
- 表达式。columnName
- 字段名或字段别名。
返回值
- 如果任一参数为 NULL,返回 NULL
- 返回 String 类型
示例
sql
> SELECT reverse("magus")
┌─reverse("magus") ───────┐
│ sugam │
└─────────────────────────┘
rtrim
去除字符串 s
尾部的空格
语法
sql
rtrim(s: expr | columnName)
参数
expr
- 表达式。columnName
- 字段名或字段别名。
返回值
- 如果任一参数为 NULL,返回 NULL
- 返回 String 类型
示例
sql
> SELECT rtrim("magus ")
┌─rtrim("magus ")───────┐
│ magus │
└───────────────────────┘
space
返回 N
个空格
语法
sql
space(N: expr | columnName)
参数
expr
- 表达式。columnName
- 字段名或字段别名。
返回值
- 如果任一参数为 NULL,返回 NULL
- 返回 String 类型
示例
sql
> SELECT space(3)
┌─space(3)─────────┐
│ " " │
└──────────────────┘
strcmp
比较字符串 s1
和 s2
,如果相等返回 0,如果 s1 > s2
返回 1,如果 s1 < s2
返回 0,返回值类型为 Int64,如果 s1
, s2
均为 NULL
, 则返回 NULL
语法
sql
strcmp(s1: expr | columnName, s2: expr | columnName)
参数
expr
- 表达式。columnName
- 字段名或字段别名。
返回值
- 如果任一参数为 NULL,返回 NULL
- 返回 Int64 类型
示例
sql
> SELECT strcmp("magus", "magus")
┌─strcmp("magus", "magus")─────────┐
│ 0 │
└──────────────────────────────────┘
substr/substring
从字符串 s
的 start
位置截取长度为 length
的子字符串,从 1 开始计数
length
参数可选,当不传入时返回从 start
开始到字符串尾部的子字符串
语法
sql
substr/substring(s: expr | columnName, start: expr | columnName[, length: expr | columnName])
参数
expr
- 表达式。columnName
- 字段名或字段别名。
返回值
- 如果任一参数为 NULL,返回 NULL
- 返回 String 类型
示例
sql
> SELECT substr("magus", 2, 3), substring("magus", 2, 3), substr("magus", 2), substring("magus", 2)
┌─substr("magus", 2, 3)─┬─substring("magus", 2, 3)─┬─substr("magus", 2)─┬─substring("magus", 2)─┐
│ agu │ agu | agus | agus |
└───────────────────────┴──────────────────────────┴────────────────────┴───────────────────────┘
substring_index
返回从字符串 s
的第 count
个出现的分隔符 delimiter
之后的子串。
如果 count
是正数,返回第 count
个字符左边的字符串。
如果 count
是负数,返回第 (count
的绝对值 (从右边数)) 个字符右边的字符串。
语法
sql
substring_index(str: expr | columnName, delimiter: expr | columnName, count: expr | columnName)
参数
expr
- 表达式。columnName
- 字段名或字段别名。
返回值
- 如果任一参数为 NULL,返回 NULL
- 返回 String 类型
示例
sql
> SELECT substring_index("magus", "a", 1)
┌─substring_index("magus", "a", 1)───────┐
│ m │
└────────────────────────────────────────┘
sql
> SELECT substring_index("magus", "a", -1)
┌─substring_index("magus", "a", -1)───────┐
│ gus │
└─────────────────────────────────────────┘
trim
去掉字符串 s
开始和结尾处的空格
语法
sql
trim(s: expr | columnName)
参数
expr
- 表达式。columnName
- 字段名或字段别名。
返回值
- 如果任一参数为 NULL,返回 NULL
- 返回 String 类型
示例
sql
> SELECT trim(" magus ")
┌─replacetrim(" magus ")──┐
│ magus │
└─────────────────────────┘
upper/ucase
将字符串 s
转为大写
语法
sql
upper/ucase(s: expr | columnName)
参数
expr
- 表达式。columnName
- 字段名或字段别名。
返回值
- 如果任一参数为 NULL,返回 NULL
- 返回 String 类型
示例
sql
> SELECT upper/ucase("magus")
┌─upper/ucase("magus")────┐
│ MAGUS │
└─────────────────────────┘
hex
将字符串或数字转为 16 进制
语法
sql
hex(str: expr | columnName)
hex(N: expr | columnName)
参数
expr
- 表达式。columnName
- 字段名或字段别名。
返回值
- 如果任一参数为 NULL,返回 NULL
- 返回 String 类型
示例
sql
> SELECT hex("abc")
┌─hex("abc") ───────┐
│ 616263 │
└───────────────────┘
sql
> SELECT hex(321)
┌─hex(321)───────┐
│ 141 │
└────────────────┘
unhex
将参数中的每对十六进制数字解释为一个数字,并将其转换为该数字表示的字符。
语法
sql
unhex(s: expr | columnName)
参数
expr
- 表达式。columnName
- 字段名或字段别名。
返回值
- 如果任一参数为 NULL,返回 NULL
- 返回 String 类型
示例
sql
> SELECT unhex("616263")
┌─unhex("616263")───────┐
│ abc │
└───────────────────────┘
rpad
在第一个参数 str
的右边填充第三个参数 padstr
,使第一个参数 str
的长度达到第二个参数 len
,第二个参数 len
类型需为 Number,返回 String
若第二个参数 len
的值小于第一个参数 str
的长度,则返回第一个参数 str
到第二个参数 len
的值的子串
语法
sql
rpad(str: expr | columnName, len expr | columnName, padstr expr | columnName)
参数
expr
- 表达式。columnName
- 字段名或字段别名。
返回值
- 如果任一参数为 NULL,返回 NULL
- 返回 String 类型
示例
sql
> SELECT rpad("hi", 4, "?")
┌─rpad("hi", 4, "?")──────┐
│ hi?? │
└─────────────────────────┘
sql
> SELECT rpad("hi", 1, "?")
┌─rpad("hi", 1, "?")──────┐
│ h │
└─────────────────────────┘
bit_length
返回 str
的字节长度,类型为 Int64。如果 str
为 NULL
,则返回 NULL
语法
sql
bit_length(str: expr | columnName)
参数
expr
- 表达式。columnName
- 字段名或字段别名。
返回值
- 如果任一参数为 NULL,返回 NULL
- 返回 String 类型
示例
sql
> SELECT bit_length("text")
┌─bit_length("text")───────┐
│ 32 │
└──────────────────────────┘
char_length/character_length
返回 str
的字符长度,类型为 Int64
语法
sql
char_length/ character_length(str: expr | columnName)
参数
expr
- 表达式。columnName
- 字段名或字段别名。
返回值
- 如果任一参数为 NULL,返回 NULL
- 返回 Int64 类型
示例
sql
> SELECT char_length("magus")
┌─replace("magus", "a", "8")─────────┐
│ 5 │
└────────────────────────────────────┘
sql
> SELECT char_length("麦杰科技")
┌─char_length("麦杰科技")─────────┐
│ 4 │
└────────────────────────────────┘
find_in_set
找到 str
在 strList
中的位置,strList
需为以 ,
分割的字符串。未找到返回 0。
如果 str
和 strList
皆为 NULL
,则返回 NULL
语法
sql
find_in_set(str: expr | columnName, strList: expr | columnName)
参数
expr
- 表达式。columnName
- 字段名或字段别名。
返回值
- 如果任一参数为 NULL,返回 NULL
- 返回 Int64 类型
示例
sql
> SELECT find_in_set("a", "m,a,g,u,s")
┌─find_in_set("a", "m,a,g,u,s")─────────┐
│ 2 │
└───────────────────────────────────────┘
to_string/ tostring
将 any
参数转为 String,如果未传入 sep
参数,则分隔符默认为 ,
语法
sql
to_string/ tostring(any: expr | columnName[, sep: expr | columnName])
参数
expr
- 表达式。columnName
- 字段名或字段别名。
返回值
- 如果任一参数为 NULL,返回 NULL
- 返回 String 类型
示例
sql
> SELECT to_string/tostring(now())
┌─to_string/tostring(now())──────────────┐
│ 2024-03-09 18:06:58.6259823+08:00 │
└────────────────────────────────────────┘