字符串函数
本页是 SQL 字符串标量函数参考,收录各函数的语法、参数、示例与相关函数说明。
| 函数 | 别名 | 说明 |
|---|---|---|
ascii |
— | 返回字符串首个字符的 Unicode 码值 |
bit_length |
— | 返回字符串的位长度 |
btrim |
trim |
去除字符串首尾的指定字符 |
character_length |
length、char_length |
返回字符串的字符数 |
chr |
— | 返回指定 ASCII 或 Unicode 码值对应的字符 |
concat |
— | 拼接多个字符串 |
concat_ws |
— | 用指定分隔符拼接多个字符串 |
contains |
— | 判断字符串中是否包含指定子串(区分大小写) |
ends_with |
— | 判断字符串是否以指定子串结尾 |
find_in_set |
— | 返回字符串在逗号分隔列表中的位置 |
initcap |
— | 将字符串中每个单词的首字母大写 |
left |
— | 返回字符串左侧指定数量的字符 |
levenshtein |
— | 返回两个字符串之间的 Levenshtein 距离 |
lower |
— | 将字符串转换为小写 |
lpad |
— | 在字符串左侧填充到指定长度 |
ltrim |
— | 去除字符串开头的指定字符 |
octet_length |
— | 返回字符串的字节长度 |
repeat |
— | 将字符串重复指定次数 |
replace |
— | 替换字符串中所有匹配的子串 |
reverse |
— | 反转字符串的字符顺序 |
right |
— | 返回字符串右侧指定数量的字符 |
rpad |
— | 在字符串右侧填充到指定长度 |
rtrim |
— | 去除字符串末尾的指定字符 |
split_part |
— | 按分隔符拆分字符串并返回指定位置的子串 |
starts_with |
— | 判断字符串是否以指定子串开头 |
strpos |
instr、position |
返回子串在字符串中的起始位置 |
substr |
substring |
从指定位置提取指定长度的子串 |
substr_index |
substring_index |
返回第 count 次出现分隔符之前的子串 |
to_hex |
— | 将整数转换为十六进制字符串 |
translate |
— | 按位置对应关系替换字符串中的字符 |
upper |
— | 将字符串转换为大写 |
uuid |
— | 生成每行唯一的 UUID v4 字符串 |
ascii
返回字符串中第一个字符的 Unicode 字符码值。
语法:ascii(str)
参数:
str:要操作的字符串表达式。可以是常量、列或函数,以及任意运算符组合。
示例:
1> select ascii('abc');
2+--------------------+
3| ascii(Utf8("abc")) |
4+--------------------+
5| 97 |
6+--------------------+
7> select ascii('中');
8+-------------------+
9| ascii(Utf8("中")) |
10+-------------------+
11| 20013 |
12+-------------------+
相关函数:chr
bit_length
返回字符串的位长度。
语法:bit_length(str)
参数:
str:要操作的字符串表达式。可以是常量、列或函数,以及任意运算符组合。
示例:
1> select bit_length('timeseries');
2+--------------------------------+
3| bit_length(Utf8("timeseries")) |
4+--------------------------------+
5| 80 |
6+--------------------------------+
相关函数:length、octet_length
btrim
从字符串的开头和结尾去除指定的修剪字符串。如果未提供修剪字符串,则去除输入字符串首尾的所有空白字符。
语法:btrim(str[, trim_str])
也可写作:
trim(BOTH trim_str FROM str)trim(trim_str FROM str)
参数:
str:要操作的字符串表达式。可以是常量、列或函数,以及任意运算符组合。trim_str:要操作的字符串表达式。可以是常量、列或函数,以及任意运算符组合。默认为空白字符。
别名:trim
示例:
1> select btrim('__timeseries____', '_');
2+-------------------------------------------+
3| btrim(Utf8("__timeseries____"),Utf8("_")) |
4+-------------------------------------------+
5| timeseries |
6+-------------------------------------------+
character_length
返回字符串中的字符数。
语法:character_length(str)
参数:
str:要操作的字符串表达式。可以是常量、列或函数,以及任意运算符组合。
别名:length、char_length
示例:
1> select character_length('Ångström');
2+------------------------------------+
3| character_length(Utf8("Ångström")) |
4+------------------------------------+
5| 8 |
6+------------------------------------+
相关函数:bit_length、octet_length
chr
返回指定 ASCII 或 Unicode 码值对应的字符。
语法:chr(expression)
参数:
expression:要操作的字符串表达式。可以是常量、列或函数,以及任意运算符组合。
示例:
1> select chr(20013);
2+--------------------+
3| chr(Int64(20013)) |
4+--------------------+
5| 中 |
6+--------------------+
相关函数:ascii
concat
将多个字符串拼接在一起。
语法:concat(str[, ..., str_n])
参数:
str:要操作的字符串表达式。可以是常量、列或函数,以及任意运算符组合。str_n:后续要拼接的字符串表达式。
示例:
1> select concat('time', 's', 'er', 'ies');
2+-------------------------------------------------------+
3| concat(Utf8("time"),Utf8("s"),Utf8("er"),Utf8("ies")) |
4+-------------------------------------------------------+
5| timeseries |
6+-------------------------------------------------------+
相关函数:concat_ws
concat_ws
使用指定分隔符将多个字符串拼接在一起。
语法:concat_ws(separator, str[, ..., str_n])
参数:
separator:插入到被拼接字符串之间的分隔符。str:要操作的字符串表达式。可以是常量、列或函数,以及任意运算符组合。str_n:后续要拼接的字符串表达式。
示例:
1> select concat_ws('_', 'time', 'series');
2+--------------------------------------------------+
3| concat_ws(Utf8("_"),Utf8("time"),Utf8("series")) |
4+--------------------------------------------------+
5| time_series |
6+--------------------------------------------------+
相关函数:concat
contains
如果在字符串中找到 search_str,返回 true(区分大小写)。
语法:contains(str, search_str)
参数:
str:要操作的字符串表达式。可以是常量、列或函数,以及任意运算符组合。search_str:要在 str 中搜索的字符串。
示例:
1> select contains('the quick brown fox', 'row');
2+---------------------------------------------------+
3| contains(Utf8("the quick brown fox"),Utf8("row")) |
4+---------------------------------------------------+
5| true |
6+---------------------------------------------------+
ends_with
测试字符串是否以指定子串结尾。
语法:ends_with(str, substr)
参数:
str:要操作的字符串表达式。可以是常量、列或函数,以及任意运算符组合。substr:要测试的子串。
示例:
1> select ends_with('timeseries', 'riez');
2+--------------------------------------------+
3| ends_with(Utf8("timeseries"),Utf8("riez")) |
4+--------------------------------------------+
5| false |
6+--------------------------------------------+
7> select ends_with('timeseries', 'ries');
8+--------------------------------------------+
9| ends_with(Utf8("timeseries"),Utf8("ries")) |
10+--------------------------------------------+
11| true |
12+--------------------------------------------+
find_in_set
如果字符串 str 存在于由 N 个子串组成的字符串列表 strlist 中,返回 1 到 N 范围内的值;如果未找到,返回 0。
语法:find_in_set(str, strlist)
参数:
str:要在 strlist 中查找的字符串表达式。strlist:字符串列表是由,字符分隔的子串组成的字符串。
示例:
1> select find_in_set('b', 'a,b,c,d');
2+----------------------------------------+
3| find_in_set(Utf8("b"),Utf8("a,b,c,d")) |
4+----------------------------------------+
5| 2 |
6+----------------------------------------+
initcap
将输入字符串中每个单词的首字母大写。单词以非字母数字字符分隔。
语法:initcap(str)
参数:
str:要操作的字符串表达式。可以是常量、列或函数,以及任意运算符组合。
示例:
1> select initcap('time series');
2+------------------------------+
3| initcap(Utf8("time series")) |
4+------------------------------+
5| Time Series |
6+------------------------------+
left
返回字符串左侧指定数量的字符。
语法:left(str, n)
参数:
str:要操作的字符串表达式。可以是常量、列或函数,以及任意运算符组合。n:要返回的字符数。
示例:
1> select left('timeseries', 4);
2+-----------------------------------+
3| left(Utf8("timeseries"),Int64(4)) |
4+-----------------------------------+
5| time |
6+-----------------------------------+
相关函数:right
levenshtein
返回两个给定字符串之间的 Levenshtein 距离。
语法:levenshtein(str1, str2)
参数:
str1:与 str2 计算 Levenshtein 距离的字符串表达式。str2:与 str1 计算 Levenshtein 距离的字符串表达式。
示例:
1> select levenshtein('kitten', 'sitting');
2+---------------------------------------------+
3| levenshtein(Utf8("kitten"),Utf8("sitting")) |
4+---------------------------------------------+
5| 3 |
6+---------------------------------------------+
lower
将字符串转换为小写。
语法:lower(str)
参数:
str:要操作的字符串表达式。可以是常量、列或函数,以及任意运算符组合。
示例:
1> select lower('Ångström');
2+-------------------------+
3| lower(Utf8("Ångström")) |
4+-------------------------+
5| ångström |
6+-------------------------+
lpad
用另一个字符串在字符串左侧填充,直到达到指定的字符串长度。
语法:lpad(str, n[, padding_str])
参数:
str:要操作的字符串表达式。可以是常量、列或函数,以及任意运算符组合。n:要填充到的字符串长度。padding_str:可选的用于填充的字符串表达式。可以是常量、列或函数,以及任意字符串运算符组合。默认为空格。
示例:
1> select lpad('Dolly', 10, 'hello');
2+---------------------------------------------+
3| lpad(Utf8("Dolly"),Int64(10),Utf8("hello")) |
4+---------------------------------------------+
5| helloDolly |
6+---------------------------------------------+
相关函数:rpad
ltrim
从字符串的开头去除指定的修剪字符串。如果未提供修剪字符串,则去除输入字符串开头的所有空白字符。
语法:ltrim(str[, trim_str])
也可写作:
trim(LEADING trim_str FROM str)
参数:
str:要操作的字符串表达式。可以是常量、列或函数,以及任意运算符组合。trim_str:要从输入字符串开头去除的字符串表达式。可以是常量、列或函数,以及任意算术运算符组合。默认为空白字符。
示例:
1> select ltrim(' timeseries ');
2+-------------------------------+
3| ltrim(Utf8(" timeseries ")) |
4+-------------------------------+
5| timeseries |
6+-------------------------------+
7> select ltrim('___timeseries___', '_');
8+-------------------------------------------+
9| ltrim(Utf8("___timeseries___"),Utf8("_")) |
10+-------------------------------------------+
11| timeseries___ |
12+-------------------------------------------+
octet_length
返回字符串的字节长度。
语法:octet_length(str)
参数:
str:要操作的字符串表达式。可以是常量、列或函数,以及任意运算符组合。
示例:
1> select octet_length('Ångström');
2+--------------------------------+
3| octet_length(Utf8("Ångström")) |
4+--------------------------------+
5| 10 |
6+--------------------------------+
相关函数:bit_length、length
repeat
返回将输入字符串重复指定次数后的字符串。
语法:repeat(str, n)
参数:
str:要操作的字符串表达式。可以是常量、列或函数,以及任意运算符组合。n:重复输入字符串的次数。
示例:
1> select repeat('data', 3);
2+-------------------------------+
3| repeat(Utf8("data"),Int64(3)) |
4+-------------------------------+
5| datadatadata |
6+-------------------------------+
replace
将字符串中所有出现的指定子串替换为新的子串。
语法:replace(str, substr, replacement)
参数:
str:要操作的字符串表达式。可以是常量、列或函数,以及任意运算符组合。substr:要在输入字符串中被替换的子串表达式。可以是常量、列或函数,以及任意运算符组合。replacement:用于替换的子串表达式。可以是常量、列或函数,以及任意运算符组合。
示例:
1> select replace('ABabbaBA', 'ab', 'cd');
2+-------------------------------------------------+
3| replace(Utf8("ABabbaBA"),Utf8("ab"),Utf8("cd")) |
4+-------------------------------------------------+
5| ABcdbaBA |
6+-------------------------------------------------+
reverse
反转字符串的字符顺序。
语法:reverse(str)
参数:
str:要操作的字符串表达式。可以是常量、列或函数,以及任意运算符组合。
示例:
1> select reverse('timeseries');
2+-----------------------------+
3| reverse(Utf8("timeseries")) |
4+-----------------------------+
5| seiresemit |
6+-----------------------------+
right
返回字符串右侧指定数量的字符。
语法:right(str, n)
参数:
str:要操作的字符串表达式。可以是常量、列或函数,以及任意运算符组合。n:要返回的字符数。
示例:
1> select right('timeseries', 6);
2+------------------------------------+
3| right(Utf8("timeseries"),Int64(6)) |
4+------------------------------------+
5| series |
6+------------------------------------+
相关函数:left
rpad
用另一个字符串在字符串右侧填充,直到达到指定的字符串长度。
语法:rpad(str, n[, padding_str])
参数:
str:要操作的字符串表达式。可以是常量、列或函数,以及任意运算符组合。n:要填充到的字符串长度。padding_str:用于填充的字符串表达式。可以是常量、列或函数,以及任意字符串运算符组合。默认为空格。
示例:
1> select rpad('timeseries', 20, '_-');
2+-----------------------------------------------+
3| rpad(Utf8("timeseries"),Int64(20),Utf8("_-")) |
4+-----------------------------------------------+
5| timeseries_-_-_-_-_- |
6+-----------------------------------------------+
相关函数:lpad
rtrim
从字符串的末尾去除指定的修剪字符串。如果未提供修剪字符串,则去除输入字符串末尾的所有空白字符。
语法:rtrim(str[, trim_str])
也可写作:
trim(TRAILING trim_str FROM str)
参数:
str:要操作的字符串表达式。可以是常量、列或函数,以及任意运算符组合。trim_str:要从输入字符串末尾去除的字符串表达式。可以是常量、列或函数,以及任意算术运算符组合。默认为空白字符。
示例:
1> select rtrim(' timeseries ');
2+-------------------------------+
3| rtrim(Utf8(" timeseries ")) |
4+-------------------------------+
5| timeseries |
6+-------------------------------+
7> select rtrim('___timeseries___', '_');
8+-------------------------------------------+
9| rtrim(Utf8("___timeseries___"),Utf8("_")) |
10+-------------------------------------------+
11| ___timeseries |
12+-------------------------------------------+
split_part
按指定分隔符拆分字符串,并返回指定位置的子串。
语法:split_part(str, delimiter, pos)
参数:
str:要操作的字符串表达式。可以是常量、列或函数,以及任意运算符组合。delimiter:用于拆分的字符串或字符。pos:要返回的部分的位置。
示例:
1> select split_part('1.2.3.4.5', '.', 3);
2+--------------------------------------------------+
3| split_part(Utf8("1.2.3.4.5"),Utf8("."),Int64(3)) |
4+--------------------------------------------------+
5| 3 |
6+--------------------------------------------------+
starts_with
测试字符串是否以指定子串开头。
语法:starts_with(str, substr)
参数:
str:要操作的字符串表达式。可以是常量、列或函数,以及任意运算符组合。substr:要测试的子串。
示例:
1> select starts_with('timeseries','time');
2+----------------------------------------------+
3| starts_with(Utf8("timeseries"),Utf8("time")) |
4+----------------------------------------------+
5| true |
6+----------------------------------------------+
strpos
返回指定子串在字符串中的起始位置。位置从 1 开始计数。如果字符串中不存在该子串,函数返回 0。
语法:strpos(str, substr)
也可写作:
position(substr in str)
参数:
str:要操作的字符串表达式。可以是常量、列或函数,以及任意运算符组合。substr:要搜索的子串表达式。
别名:instr、position
示例:
1> select strpos('timeseries', 'ser');
2+----------------------------------------+
3| strpos(Utf8("timeseries"),Utf8("ser")) |
4+----------------------------------------+
5| 5 |
6+----------------------------------------+
substr
从字符串的指定起始位置提取指定字符数的子串。
语法:substr(str, start_pos[, length])
也可写作:
substring(str from start_pos for length)
参数:
str:要操作的字符串表达式。可以是常量、列或函数,以及任意运算符组合。start_pos:子串的起始字符位置。字符串中第一个字符的位置为 1。length:要提取的字符数。如果未指定,返回起始位置之后的字符串剩余部分。
别名:substring
示例:
1> select substr('timeseries', 5, 3);
2+----------------------------------------------+
3| substr(Utf8("timeseries"),Int64(5),Int64(3)) |
4+----------------------------------------------+
5| ser |
6+----------------------------------------------+
substr_index
返回 str 中第 count 次出现分隔符 delim 之前的子串。 如果 count 为正数,返回(从左数)最后一个分隔符左侧的所有内容。 如果 count 为负数,返回(从右数)最后一个分隔符右侧的所有内容。
语法:substr_index(str, delim, count)
参数:
str:要操作的字符串表达式。可以是常量、列或函数,以及任意运算符组合。delim:要在 str 中查找并用于拆分 str 的字符串。count:搜索分隔符的次数。可以是正数或负数。
别名:substring_index
示例:
1> select substr_index('www.apache.org', '.', 1);
2+---------------------------------------------------------+
3| substr_index(Utf8("www.apache.org"),Utf8("."),Int64(1)) |
4+---------------------------------------------------------+
5| www |
6+---------------------------------------------------------+
7> select substr_index('www.apache.org', '.', -1);
8+----------------------------------------------------------+
9| substr_index(Utf8("www.apache.org"),Utf8("."),Int64(-1)) |
10+----------------------------------------------------------+
11| org |
12+----------------------------------------------------------+
to_hex
将整数转换为十六进制字符串。
语法:to_hex(int)
参数:
int:要操作的整数表达式。可以是常量、列或函数,以及任意运算符组合。
示例:
1> select to_hex(12345689);
2+-------------------------+
3| to_hex(Int64(12345689)) |
4+-------------------------+
5| bc6159 |
6+-------------------------+
translate
将字符串中的字符转换为指定的转换字符。
语法:translate(str, chars, translation)
参数:
str:要操作的字符串表达式。可以是常量、列或函数,以及任意运算符组合。chars:要转换的字符。translation:转换字符。转换字符仅替换 chars 字符串中相同位置的字符。
示例:
1> select translate('twice', 'wic', 'her');
2+--------------------------------------------------+
3| translate(Utf8("twice"),Utf8("wic"),Utf8("her")) |
4+--------------------------------------------------+
5| there |
6+--------------------------------------------------+
upper
将字符串转换为大写。
语法:upper(str)
参数:
str:要操作的字符串表达式。可以是常量、列或函数,以及任意运算符组合。
示例:
1> select upper('timeSeries');
2+---------------------------+
3| upper(Utf8("timeSeries")) |
4+---------------------------+
5| TIMESERIES |
6+---------------------------+
uuid
返回每行唯一的 UUID v4 字符串值。
语法:uuid()
示例:
1> select uuid();
2+--------------------------------------+
3| uuid() |
4+--------------------------------------+
5| 6ec17ef8-1934-41cc-8d59-d0c8f9eea1f0 |
6+--------------------------------------+
评价此篇文章
