字符串函数
字符串函数是用于处理和操作文本字符串的函数集合。它们包括字符串连接、字符串分割、字符串查找和替换、字符串长度计算等操作。字符串函数可以帮助你处理和转换文本数据,进行字符串匹配和处理。
ascii
返回字符串中第一个字符的 ASCII 值。
ascii(str)
参数 | 描述 |
---|---|
str | 要操作的字符串表达式。可以是常量、列或函数,以及字符串运算符的任意组合。 |
查看 ascii
示例
SELECT ascii('abc');
+--------------------+
| ascii(Utf8("abc")) |
+--------------------+
| 97 |
+--------------------+
相关函数:chr
bit_length
返回字符串的位长度。
bit_length(str)
参数 | 描述 |
---|---|
str | 要操作的字符串表达式。可以是常量、列或函数,以及字符串运算符的任意组合。 |
查看 bit_length
示例
SELECT bit_length('abc');
+-------------------------+
| bit_length(Utf8("abc")) |
+-------------------------+
| 24 |
+-------------------------+
相关函数:length,octet_length
btrim
从字符串的开头和结尾修剪指定的修剪字符串。如果未提供修剪字符串,则从输入字符串的开头和结尾删除所有空格。
btrim(str[, trim_str])
参数 | 描述 |
---|---|
str | 要操作的字符串表达式。可以是常量、列或函数,以及字符串运算符的任意组合。 |
trim_str | 从输入字符串的开头和结尾处修剪的字符串表达式。可以是常量、列或函数,以及算术运算符的任意组合。默认为空白字符。 |
查看 btrim
示例
SELECT btrim('111abc111','1');
+------------------------------------+
| btrim(Utf8("111abc111"),Utf8("1")) |
+------------------------------------+
| abc |
+------------------------------------+
char_length
length 的别名
character_length
length 的别名
concat
将多个字符串连接在一起。
concat(separator, str[, ..., str_n])
参数 | 描述 |
---|---|
separator | 用于在串联字符串之间插入的分隔符。 |
str | 要连接的字符串表达式。可以是常量、列或函数,也可以是字符串运算符的任意组合。 |
str_n | 要连接的后续字符串列或文本字符串。 |
查看 concat
示例
SELECT concat('a', 'b', 'c');
+---------------------------------------+
| concat(Utf8("a"),Utf8("b"),Utf8("c")) |
+---------------------------------------+
| abc |
+---------------------------------------+
相关函数:concat_ws
concat_ws
使用指定的分隔符将多个字符串连接在一起。
concat_ws(separator, str[, ..., str_n])
参数 | 描述 |
---|---|
separator | 用于在串联字符串之间插入的分隔符。 |
str | 要连接的字符串表达式。可以是常量、列或函数,也可以是字符串运算符的任意组合。 |
str_n | 要连接的后续字符串列或文本字符串。 |
查看 concat_ws
示例
SELECT concat_ws(' ', 'a', 'b', 'c');
+----------------------------------------------------+
| concat_ws(Utf8(" "),Utf8("a"),Utf8("b"),Utf8("c")) |
+----------------------------------------------------+
| a b c |
+----------------------------------------------------+
相关函数:concat
chr
返回具有指定 ASCII 或 Unicode 代码值的字符。
chr(expression)
参数 | 描述 |
---|---|
expression | 包含要操作的 ASCII 或 Unicode 代码值的表达式。可以是常量、列或函数,也可以是算术或字符串运算符的任意组合。 |
查看 chr
示例
SELECT chr(20005);
+-------------------+
| chr(Int64(20005)) |
+-------------------+
| 严 |
+-------------------+
相关函数:ascii
initcap
将输入字符串中每个单词的第一个字符大写。单词由非字母数字字符分隔。
initcap(str)
参数 | 描述 |
---|---|
str | 可以是常量、列或函数,也可以是字符串运算符的任意组合。 |
查看 initcap
示例
SELECT initcap('hello world');
+------------------------------+
| initcap(Utf8("hello world")) |
+------------------------------+
| Hello World |
+------------------------------+
instr
strpos 的别名。
left
从字符串左侧开始返回指定数量的字符。
left(str, n)
参数 | 描述 |
---|---|
str | 要连接的字符串表达式。可以是常量、列或函数,也可以是字符串运算符的任意组合。 |
n | 要返回的字符数。 |
查看 left
示例
SELECT left('abcde', 3);
+------------------------------+
| left(Utf8("abcde"),Int64(3)) |
+------------------------------+
| abc |
+------------------------------+
length
返回字符串中的长度。
length(str)
查看 length
示例
SELECT length('Hello CnosDB!');
+-----------------------------------------+
| character_length(Utf8("Hello CnosDB!")) |
+-----------------------------------------+
| 13 |
+-----------------------------------------+
相关函数:bit_length,octet_length
lower
将字符串转换为小写。
lower(str)
查看 lower
示例
SELECT lower('CNOSDB');
+-----------------------+
| lower(Utf8("CNOSDB")) |
+-----------------------+
| cnosdb |
+-----------------------+
lpad
用另一个字符串将字符串的左侧填充到指定的字符串长度。
lpad(str, n[, padding_str])
参数 | 描述 |
---|---|
str | 要连接的字符串表达式。可以是常量、列或函数,也可以是字符串运算符的任意组合。 |
n | 要填充的字符串长度。 |
padding_str | 要填充的字符串表达式。可以是常量、列或函数,以及字符串运算符的任意组合。默认为空格。 |
查看 lpad
示例
SELECT lpad('abc', 10, '1');
+---------------------------------------+
| lpad(Utf8("abc"),Int64(10),Utf8("1")) |
+---------------------------------------+
| 1111111abc |
+---------------------------------------+
相关函数:rpad
ltrim
删除字符串中左边的空格。
ltrim(str[, trim_str])
参数 | 描述 |
---|---|
str | 要操作的字符串表达式。可以是常量、列或函数,以及字符串运算符的任意组合。 |
trim_str | 从输入字符串的开头开始修剪的字符串表达式。可以是常量、列或函数,以及算术运算符的任意组合。默认为空白字符。 |
查看 ltrim
示例
SELECT ltrim(' abc');
+-----------------------+
| ltrim(Utf8(" abc")) |
+-----------------------+
| abc |
+-----------------------+
octet_length
返回字符串的长度(以字节为单位)。
octet_length(str)
查看 octet_length
示例
SELECT octet_length('Hello');
+-----------------------------+
| octet_length(Utf8("Hello")) |
+-----------------------------+
| 5 |
+-----------------------------+
相关函数:bit_length,length
repeat
返回一个字符串,其中输入字符串重复指定的次数。
repeat(str, n)
参数 | 描述 |
---|---|
str | 要重复的字符串表达式。可以是常量、列或函数,以及字符串运算符的任意组合。 |
n | 重复输入字符串的次数。 |
查看 repeat
示例
SELECT repeat('a', 5);
+----------------------------+
| repeat(Utf8("a"),Int64(5)) |
+----------------------------+
| aaaaa |
+----------------------------+
replace
将字符串中所有出现的指定子字符串替换为新的子字符串。
replace(str, substr, replacement)
参数 | 描述 |
---|---|
str | 要重复的字符串表达式。可以是常量、列或函数,以及字符串运算符的任意组合。 |
substr | 要替换输入字符串的子串表达式。可以是常量、列或函数,也可以是字符串运算符的任意组合。 |
replacement | 替换子字符串表达式。可以是常量、列或函数,以及字符串运算符的任意组合。 |
查看 replace
示例
SELECT replace('aaa', 'a', 'b');
+------------------------------------------+
| replace(Utf8("aaa"),Utf8("a"),Utf8("b")) |
+------------------------------------------+
| bbb |
+------------------------------------------+
reverse
反转字符串的字符顺序。
reverse(str)
查看 reverse
示例
SELECT reverse('hello');
+------------------------+
| reverse(Utf8("hello")) |
+------------------------+
| olleh |
+------------------------+
right
从字符串右侧返回指定数量的字符。
right(str, n)
参数 | 描述 |
---|---|
str | 要重复的字符串表达式。可以是常量、列或函数,以及字符串运算符的任意组合。 |
n | 要返回的字符数。 |
查看 right
示例
SELECT right('aaabbb', 3);
+--------------------------------+
| right(Utf8("aaabbb"),Int64(3)) |
+--------------------------------+
| bbb |
+--------------------------------+
相关函数:left
rpad
用另一个字符串将字符串的右侧填充到指定的字符串长度。
rpad(str, n[, padding_str])
参数 | 描述 |
---|---|
str | 要重复的字符串表达式。可以是常量、列或函数,以及字符串运算符的任意组合。 |
n | 要填充的字符串长度。 |
padding_str | 要填充的字符串表达式。可以是常量、列或函数,以及字符串运算符的任意组合。默认为空格。 |
查看 rpad
示例
SELECT rpad('aaa', 10, 'b');
+---------------------------------------+
| rpad(Utf8("aaa"),Int64(10),Utf8("b")) |
+---------------------------------------+
| aaabbbbbbb |
+---------------------------------------+
相关函数:lpad
rtrim
从字符串中删除右侧空格。
rtrim(str)
查看 rtrim
示例
SELECT rtrim('aaabbb', 'b');
+---------------------------------+
| rtrim(Utf8("aaabbb"),Utf8("b")) |
+---------------------------------+
| aaa |
+---------------------------------+
split_part
根据指定分隔符分割字符串,并返回指定位置的子字符串。
split_part(str, delimiter, pos)
参数 | 描述 |
---|---|
str | 要重复的字符串表达式。可以是常量、列或函数,以及字符串运算符的任意组合。 |
delimiter | 要分割的字符串或字符。 |
pos | 要返回的部分的位置。 |
查看 split_part
示例
SELECT split_part('abc|def|ghi', '|', 2);
+----------------------------------------------------+
| split_part(Utf8("abc|def|ghi"),Utf8("|"),Int64(2)) |
+----------------------------------------------------+
| def |
+----------------------------------------------------+
starts_with
测试字符串是否以子字符串开头。
starts_with(str, substr)
查看 split_part
示例
SELECT starts_with('abcdefg', 'abc');
+------------------------------------------+
| starts_with(Utf8("abcdefg"),Utf8("abc")) |
+------------------------------------------+
| true |
+------------------------------------------+
strpos
返回字符串中指定子字符串的起始位置。位置从 1 开始。如果字符串中不存在该子字符串,则该函数返回 0。
strpos(str, substr)
等价于 instr
查看 strpos
示例
SELECT strpos('abcdef', 'def');
+------------------------------------+
| strpos(Utf8("abcdef"),Utf8("def")) |
+------------------------------------+
| 4 |
+------------------------------------+
substr
从字符串中的特定起始位置提取指定数量的字符的子字符串。
substr(str, start_pos[, length])
参数 | 描述 |
---|---|
str | 要重复的字符串表达式。可以是常量、列或函数,以及字符串运算符的任意组合。 |
start_pos | 子字符串开始的字符位置。字符串中第一个字符的位置为 1。 |
length | 要提取的字符数。如果未指定,则返回起始位置之后的字符串的其余部分。 |
查看 substr
示例
SELECT substr('abcdef', 4, 3);
+------------------------------------------+
| substr(Utf8("abcdef"),Int64(4),Int64(3)) |
+------------------------------------------+
| def |
+------------------------------------------+
to_hex
将整数转换为十六进制字符串。
to_hex(int)
参数 | 描述 |
---|---|
int | 要转换的整数表达式。可以是常量、列或函数,以及算术运算符的任意组合。 |
查看 to_hex
示例
SELECT to_hex(100);
+--------------------+
| to_hex(Int64(100)) |
+--------------------+
| 64 |
+--------------------+
translate
将字符串中的字符翻译为指定的翻译字符。
translate(str, chars, translation)
参数 | 描述 |
---|---|
str | 要操作的字符串表达式。可以是常量、列或函数,以及字符串运算符的任意组合。 |
char | 要翻译的字符。 |
translation | 翻译字符。翻译字符仅替换字符串中相同位置的字符。 |
查看 translate
示例
SELECT translate('aaabbb', 'bbb', 'ccc');
+---------------------------------------------------+
| translate(Utf8("aaabbb"),Utf8("bbb"),Utf8("ccc")) |
+---------------------------------------------------+
| aaaccc |
+---------------------------------------------------+
trim
函数从指定字符串的开头、结尾或者两端删除由指定字符组成的字符串。
trim( [ BOTH | LEADING | TRAILING ] [trim_chars FROM ] str )
参数 | 描述 |
---|---|
str | 要操作的字符串表达式。可以是常量、列或函数,以及字符串运算符的任意组合。 |
trim_chars | 指定要去除的字符。 |
BOTH | 可选,表示去除字符串两端的指定字符。 |
LEADING | 可选,表示只去除字符串左侧的指定字符。 |
TRAILING | 可选,表示只去除字符串右侧的指定字符。 |
查看 trim
示例
去除两端的字符。
SELECT trim(BOTH 'x' FROM 'xxxHello CnosDBxxx');
+---------------------------------------------+
| btrim(Utf8("xxxHello CnosDBxxx"),Utf8("x")) |
+---------------------------------------------+
| Hello CnosDB |
+---------------------------------------------+
去除左侧的字符。
SELECT trim(LEADING 'x' FROM 'xxxHello CnosDBxxx');
+---------------------------------------------+
| ltrim(Utf8("xxxHello CnosDBxxx"),Utf8("x")) |
+---------------------------------------------+
| Hello CnosDBxxx |
+---------------------------------------------+
去除右侧的字符。
SELECT trim(TRAILING 'x' FROM 'xxxHello CnosDBxxx');
+---------------------------------------------+
| rtrim(Utf8("xxxHello CnosDBxxx"),Utf8("x")) |
+---------------------------------------------+
| xxxHello CnosDB |
+---------------------------------------------+
直接去除空格。
SELECT trim(' Hello CnosDB ');
+----------------------------------+
| trim(Utf8(" Hello CnosDB ")) |
+----------------------------------+
| Hello CnosDB |
+----------------------------------+
upper
将字符串转换为大写。
upper(str)
参数 | 描述 |
---|---|
str | 要操作的字符串表达式。可以是常量、列或函数,以及字符串运算符的任意组合。 |
查看 upper
示例
SELECT upper('cnosdb');
+-----------------------+
| upper(Utf8("cnosdb")) |
+-----------------------+
| CNOSDB |
+-----------------------+
uuid
返回每行唯一的 UUID v4 字符串值。
uuid()
查看 uuid
示例
SELECT uuid();
+--------------------------------------+
| uuid() |
+--------------------------------------+
| cdc025fe-99c0-40ec-892e-dee3eb23019c |
+--------------------------------------+