跳到主要内容
版本:2.4.x

字符串函数

字符串函数是用于处理和操作文本字符串的函数集合。它们包括字符串连接、字符串分割、字符串查找和替换、字符串长度计算等操作。字符串函数可以帮助你处理和转换文本数据,进行字符串匹配和处理。

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 |
+-------------------------+

相关函数lengthoctet_length

btrim

从字符串的开头和结尾修剪指定的修剪字符串。如果未提供修剪字符串,则从输入字符串的开头和结尾删除所有空格。

btrim(str[, trim_str])
参数描述
str要操作的字符串表达式。可以是常量、列或函数,以及字符串运算符的任意组合。
trim_str从输入字符串的开头和结尾处修剪的字符串表达式。可以是常量、列或函数,以及算术运算符的任意组合。默认为空白字符。
查看 btrim 示例
SELECT btrim('111abc111','1');
+------------------------------------+
| btrim(Utf8("111abc111"),Utf8("1")) |
+------------------------------------+
| abc |
+------------------------------------+

相关函数ltrimrtrimtrim

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 |
+------------------------------+

相关函数:lowerupper

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 |
+-----------------------+

相关函数:initcap,upper

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 |
+-----------------------+

相关函数:btrim,rtrim,trim

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(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 |
+---------------------------------+

相关函数:btrim, ltrim, trim

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 |
+----------------------------------+

相关函数:btrim, ltrim, rtrim

upper

将字符串转换为大写。

upper(str)
参数描述
str要操作的字符串表达式。可以是常量、列或函数,以及字符串运算符的任意组合。
查看 upper 示例
SELECT upper('cnosdb');
+-----------------------+
| upper(Utf8("cnosdb")) |
+-----------------------+
| CNOSDB |
+-----------------------+

相关函数:initcap, lower

uuid

返回每行唯一的 UUID v4 字符串值。

uuid()
查看 uuid 示例
SELECT uuid();
+--------------------------------------+
| uuid() |
+--------------------------------------+
| cdc025fe-99c0-40ec-892e-dee3eb23019c |
+--------------------------------------+