字符串函数
- ASCII:返回字符或者字符串最左边字符对应的ASCII值。
- BIN:返回整数的二进制字符串。
- BIT_LENGTH:以位为单位返回参数str的长度。
- CHAR:返回整数对应的ASCII码组成的字符串。
- CHAR_LENGTH/CHARACTER_LENGTH:以字符为单位返回字符串str的长度。
- CONCAT:连接字符串。
- CONCAT_WS:连接字符串,字符串中间以分隔串间隔。
- ELT:返回整数N指定的字符串。
- EXPORT_SET:根据bits中的比特值,返回组合后的字符串。
- FIELD:返回指定字符串在字符串列表中的索引位置。
- FIND_IN_SET:返回字符或字符串在另一个字符串中的位置。
- FORMAT:将数字N格式化,返回字符串。
- HEX:返回整数对应的十六进制字符串,或者返回字符串中每个字符对应的十六进制数所组成的字符串。
- INSTR:返回字符串中子字符串首次出现的位置。
- LEFT:从字符串最左边开始,返回N个字符。
- LENGTH/OCTET_LENGTH:字符串长度。
- LIKE:简单的模式匹配。
- LOCATE:返回字符串首次出现在另一个字符串中的位置信息。
- LOWER/LCASE:将字符串转换为小写。
- LPAD:左拼接字符串。
- LTRIM:删除字符串的前导空格。
- MAKE_SET:返回一组以逗号分隔的字符串。
- MID:从字符串的指定位置开始,返回指定长度的子字符串。作用同SUBSTR/SUBSTRING。
- OCT:返回指定整数的八进制字符串表示形式。
- ORD:返回参数最左侧字符的字符编码。
- POSITION:返回字符串中子字符串首次出现的位置。
- REPEAT:返回字符串重复多次后的字符串。
- REPLACE:用指定字符串替换另一个字符串中的部分字符。
- REVERSE:将字符串逆序。
- RIGHT:返回字符串最右边的指定数量的字符。
- RLIKE/REGEXP:将字符串expression与pattern进行正则匹配,匹配成功返回1,否则返回0。
- RPAD:右拼接字符串。
- RTRIM:删除字符串的后置空格。
- SPACE:返回由指定数量空格组成的字符串。
- STRCMP:根据两个字符串的大小,返回0、1或者-1。
- SUBSTR/SUBSTRING:返回从指定位置开始的指定长度的子字符串。
- SUBSTRING_INDEX:返回字符串str中最后一次分隔符delim出现之前的子字符串。
- TO_BASE64:返回转换为BASE64编码的字符串。
- TRIM:删除字符串前后所有的空格。
- UPPER/UCASE:将字符串转换为大写。
ASCII
ASCII(varchar str)
命令说明:返回字符
str
或者字符串str
最左边字符对应的十进制ASCII值。返回值类型:BIGINT。
示例:
select ascii('2');
+------------+
| ascii('2') |
+------------+
| 50 |
select ascii('dx');
+-------------+
| ascii('dx') |
+-------------+
| 100 |
BIN
BIN(bigint N)
命令说明:返回
N
的二进制字符串。如果
N
为null
,则返回结果为null
。返回值类型:VARCHAR。
示例:
select bin(12);
+---------+
| bin(12) |
+---------+
| 1100 |
BIT_LENGTH
BIT_LENGTH(varchar str)
命令说明:以位为单位返回参数
str
的长度。返回值类型:BIGINT。
示例:
select bit_length('text');
+--------------------+
| bit_length('text') |
+--------------------+
| 32 |
select bit_length('中国');
+--------------------+
| bit_length('中国') |
+--------------------+
| 48 |
CHAR
CHAR(bigint N1, bigint N2...)
命令说明: 返回整数
N1
、N2
…对应的十进制ASCII码组成的字符串。返回值类型:VARBINARY。
示例:
select char(97,110,97,108,121,116,105,99,100,98);
+----------------------------------------------------+
| char(97, 110, 97, 108, 121, 116, 105, 99, 100, 98) |
+----------------------------------------------------+
| analyticdb |
CHAR_LENGTH/CHARACTER_LENGTH
CHAR_LENGTH(varchar str)
命令说明: 以字符为单位返回字符串
str
的长度。一个汉字所对应的字符长度是
1
。返回值类型:BIGINT。
示例:
select char_length('中国');
+---------------------+
| char_length('中国') |
+---------------------+
| 2 |
select char_length('abc');
+--------------------+
| char_length('abc') |
+--------------------+
| 3 |
CONCAT
concat(varchar str1, …, varchar strn)
命令说明:字符串连接操作,其中任何一个参数为
null
,则返回值为null
。返回值类型:VARCHAR。
示例:
select concat('aliyun', ', ', 'analyticdb');
+--------------------------------------+
| concat('aliyun', ', ', 'analyticdb') |
+--------------------------------------+
| aliyun, analyticdb |
select concat('abc',null,'def');
+----------------------------+
| concat('abc', null, 'def') |
+----------------------------+
| NULL |
CONCAT_WS
concat_ws(varchar separator, varchar str1, …, varchar strn)
命令说明:字符串连接操作,第一个参数
separator
是其余参数的分隔符,连接时会跳过任何为null
值的字符串。返回值类型:VARCHAR。
示例:
select concat_ws(',', 'First name', 'Second name', 'Last Name')as result;
+----------------------------------+
| result |
+----------------------------------+
| First name,Second name,Last Name |
select concat_ws(',','First name',NULL,'Last Name')as result;
+----------------------+
| result |
+----------------------+
| First name,Last Name |
ELT
ELT(bigint N, varchar str1, varchar str2, varchar str3,...)
命令说明:返回第
N
个字符串。若
N<1
或大于后面字符串参数的数量,则返结果为null
。返回值类型:VARCHAR。
示例:
select elt(4, 'Aa', 'Bb', 'Cc', 'Dd');
+--------------------------------+
| elt(4, 'Aa', 'Bb', 'Cc', 'Dd') |
+--------------------------------+
| Dd |
EXPORT_SET
EXPORT_SET(bigint bits, varchar on, varchar off[, varchar separator[, bigint number_of_bits]])
命令说明:返回一个字符串,根据整数
bits
的二进制位01
值,从右到左(从低位到高位)放置on
、off
字符串。1
的位置放on
字符串,0
的位置放off
字符串,由分隔符字符串(默认为逗号字符)分隔。 检查位数由number_of_bits
指定,如果未指定,默认值为64
。如果检查位数大于
64
,number_of_bits
将被静默剪裁为64
。检查位数为
-1
、64
,返回结果相同。返回值类型:VARCHAR。
示例:
select export_set(5,'1','0',',',2);
+---------------------------------+
| export_set(5, '1', '0', ',', 2) |
+---------------------------------+
| 1,0 |
select export_set(5,'1','0',',',10);
+----------------------------------+
| export_set(5, '1', '0', ',', 10) |
+----------------------------------+
| 1,0,1,0,0,0,0,0,0,0 |
FIELD
field(varchar str, varchar str1, varchar str2, varchar str3,...)
命令说明:返回
str
在str1
、str2
、str3
,…列表中的索引位置。 如果未找到str
,则返回0
。返回值类型:BIGINT。
示例:
select field('Bb', 'Aa', 'Bb', 'Cc', 'Dd', 'Ff');
+-------------------------------------------+
| field('Bb', 'Aa', 'Bb', 'Cc', 'Dd', 'Ff') |
+-------------------------------------------+
| 2 |
FIND_IN_SET
FIND_IN_SET(varchar str, varchar strlist)
命令说明:返回
str
在列表strlist
中的位置。如果
str
不在strlist
中或者strlist
是空字符串,返回结果为0
。如果
str
、strlist
任一参数为null
,返回结果为null
。返回值类型:BIGINT。
示例:
select find_in_set('b','a,b,c,d');
+-----------------------------+
| find_in_set('b', 'a,b,c,d') |
+-----------------------------+
| 2 |
FORMAT
format(double X, bigint D)
命令说明:将数字
X
格式化为#,###,###.##
样式,舍入到D
小数位,并将结果作为字符串返回。如果
D
为0
,则返回结果没有小数点或小数部分。返回值类型:BIGINT。
示例:
select format(12332.123456, 4)as result1, format(12332.1,4)as result2, format(12332.2,0)as result3;
+-------------+-------------+---------+
| result1 | result2 | result3 |
+-------------+-------------+---------+
| 12,332.1235 | 12,332.1000 | 12,332 |
HEX
HEX(bigint N)
HEX(varchar str)
命令说明:返回整数
N
所对应的十六进制字符串,或者返回str
中每个字符对应的十六进制数所组成的字符串。返回值类型:VARCHAR。
示例:
select hex(16);
+---------+
| hex(16) |
+---------+
| 10 |
select hex('16');
+-----------+
| hex('16') |
+-----------+
| 3136 |
INSTR
INSTR(varchar str, varchar substr)
命令说明:返回字符串
str
中子字符串substr
首次出现的位置。返回值类型:BIGINT。
示例:
select instr('foobarbar', 'bar');
+---------------------------+
| instr('foobarbar', 'bar') |
+---------------------------+
| 4 |
LEFT
LEFT(varchar str, bigint len)
命令说明:返回字符串
str
中最左边的len
个字符。如果
str
或者len
为null
,则返回结果为null
。返回值类型:VARCHAR。
示例:
select left('foobarbar', 5);
+-----------------------------+
| left('foobarbar', 5) |
+-----------------------------+
| fooba |
LENGTH/OCTET_LENGTH
length(varchar str)
命令说明:返回字符串
str
的长度。返回值类型:BIGINT。
示例:
select length('aliyun');
+------------------+
| length('aliyun') |
+------------------+
| 6 |
LIKE
expression [ NOT ] LIKE pattern [ESCAPE 'escape_char']
命令说明:
LIKE
运算符用于将字符串expression
与pattern
进行匹配,匹配成功返回1
,匹配失败返回0
。pattern
为通配符模式,通配符包括:%
:匹配任意长度的字符串。_
:匹配单个字符。
escape_char
:对pattern
中的%
、_
进行转义,使得转义字符后面的%
、_
不作通配符使用。返回值类型:BIGINT。
示例:
select 'David!' like 'David_' as result1, 'David!' not like 'David_' as result2, 'David!' like '%D%v%' as result3;
+---------+---------+---------+
| result1 | result2 | result3 |
+---------+---------+---------+
| 1 | 0 | 1 |
select 'David_' like 'David|_' ESCAPE '|';
+------------------------------------+
| 'David_' LIKE 'David|_' ESCAPE '|' |
+------------------------------------+
| 1 |
LOCATE
LOCATE(varchar substr, varchar str)
LOCATE(varchar substr, varchar str, bigint pos)
命令说明:返回字符串
str
中首次出现substr
的位置信息,或者返回字符串str
中从指定位置pos
开始首次出现substr
的位置信息。如果
substr
不在str
中,返回结果为0
。如果
substr
或者str
为null
,返回结果为null
。返回值类型:BIGINT。
示例:
select locate('bar', 'foobarbar');
+----------------------------+
| locate('bar', 'foobarbar') |
+----------------------------+
| 4 |
select locate('bar', 'foobarbar', 7);
+-------------------------------+
| locate('bar', 'foobarbar', 7) |
+-------------------------------+
| 7 |
LOWER/LCASE
lower(varchar str)
命令说明:将字符串
str
中的字母转换为小写。返回值类型:VARCHAR。
示例:
select lower('Aliyun');
+-----------------+
| lower('Aliyun') |
+-----------------+
| aliyun |
LPAD
lpad(varchar str, bigint len, varchar padstr)
命令说明:将字符串
str
左边拼接padstr
直到长度达到len
,并返回拼接后的字符串。如果
str
长于len
,则返回值将缩短为len
个字符。返回值类型:VARCHAR。
示例:
select lpad('Aliyun',9,'#');
+------------------------+
| lpad('Aliyun', 9, '#') |
+------------------------+
| ###Aliyun |
LTRIM
LTRIM(varchar str)
命令说明:删除字符串
str
所有前导空格。返回值类型:VARCHAR。
示例:
select ltrim(' abc');
+----------------+
| ltrim(' abc') |
+----------------+
| abc |
MAKE_SET
MAKE_SET(bits, str1, str2,...)
命令说明:返回一个设置值(包含由字符分隔的子字符串的字符串),其中包含具有相应位设置的字符串。
str1
对应于0
位,str2
对应于1
位,依此类推。str1
,str2
,…中的null
值不会附加到结果中。返回值类型:VARCHAR。
示例:
select make_set(5,'hello','nice','world');
+---------------------------------------+
| make_set(5, 'hello', 'nice', 'world') |
+---------------------------------------+
| hello,world |
select make_set(1 | 4,'hello','nice',NULL,'world')as result;
+--------+
| result |
+--------+
| hello |
MID
MID(varchar str, bigint pos, bigint len)
命令说明:与SUBSTRING功能相同,从字符串
str
的pos
开始返回len
长度的子字符串。返回值类型:VARCHAR。
示例:
select mid('Quadratically',5,6);
+----------------------------+
| mid('Quadratically', 5, 6) |
+----------------------------+
| ratica |
select mid('Sakila', -5, 3);
+--------------------------------+
| mid('Sakila', INTEGER '-5', 3) |
+--------------------------------+
| aki |
OCT
OCT(bigint N)
命令说明:返回整数
N
的八进制字符串表示形式。如果
N
为null
,返回结果为null
。返回值类型:VARCHAR。
示例:
select oct(12);
+---------+
| oct(12) |
+---------+
| 14 |
POSITION
POSITION(varchar substr IN varchar str)
命令说明: 返回字符串
str
中子字符串substr
首次出现位置,位置从1
开始,如果未找到则返回0
。返回值类型:BIGINT。
示例:
select position('bar' in 'foobarbar');
+----------------------------+
| locate('bar', 'foobarbar') |
+----------------------------+
| 4 |
REPEAT
REPEAT(varchar str, bigint count)
命令说明:返回由字符串
str
重复count
次数组成的字符串。如果
count<1
,则返回空字符串。如果
str
或count
为null
,则返回null
。返回值类型:VARCHAR。
示例:
select repeat('a', 3);
+----------------+
| repeat('a', 3) |
+----------------+
| aaa |
select repeat('abc', null);
+---------------------+
| repeat('abc', null) |
+---------------------+
| NULL |
select repeat(null, 3);
+-----------------+
| repeat(null, 3) |
+-----------------+
| NULL |
REPLACE
REPLACE(varchar str, varchar from_str, varchar to_str)
命令说明:将
str
中的from_str
内容替换为to_str
。返回值类型:VARCHAR。
示例:
select replace('WWW.aliyun.com', 'W', 'w');
+-------------------------------------+
| replace('WWW.aliyun.com', 'W', 'w') |
+-------------------------------------+
| www.aliyun.com |
REVERSE
REVERSE(varchar str)
命令说明:返回
str
逆序后的字符串。返回值类型:VARCHAR。
示例:
select reverse('123456');
+-------------------+
| reverse('123456') |
+-------------------+
| 654321 |
RIGHT
RIGHT(varchar str, bigint len)
命令说明:返回字符串
str
中最右边的len
个字符。如果
str
或者len
为null
,返回结果为null
。返回值类型:VARCHAR。
示例:
select right('abc',3);
+------------------------+
| presto_right('abc', 3) |
+------------------------+
| abc |
RLIKE/REGEXP
expression RLIKE pattern
expression REGEXP pattern
命令说明:将字符串
expression
与pattern
进行正则匹配,匹配成功返回1
,否则返回0
。如果
expression
或者pattern
为null
,返回结果为null
。返回值类型:BIGINT。
示例:
select 'Michael!' regexp '.*';
+-------------------------------+
| regexp_like('Michael!', '.*') |
+-------------------------------+
| 1 |
select 'new*\n*line' regexp 'new\\*.\\*line';
+--------------------------------------------+
| regexp_like('new*
*line', 'new\\*.\\*line') |
+--------------------------------------------+
| 0 |
select 'c' regexp '^[a-d]';
+----------------------------+
| regexp_like('c', '^[a-d]') |
+----------------------------+
| 1 |
RPAD
rpad(varchar str, bigint len, varchar padstr)
命令说明:将字符串
str
右边拼接padstr
直到长度达到len
,并返回拼接后的字符串。如果
str
长于len
,则返回值将缩短为len
个字符。返回值类型:VARCHAR。
示例:
select rpad('Aliyun',9,'#');
+------------------------+
| rpad('Aliyun', 9, '#') |
+------------------------+
| Aliyun### |
RTRIM
RTRIM(varchar str)
命令说明:删除字符串
str
所有后置空格。返回值类型:VARCHAR。
示例:
select rtrim('barbar ');
+--------------------+
| rtrim('barbar ') |
+--------------------+
| barbar |
SPACE
SPACE(bigint N)
命令说明:返回由指定数量空格组成的字符串。
返回值类型:VARCHAR。
示例:
select concat("#", space(6), "#");
+----------------------------+
| concat('#', space(6), '#') |
+----------------------------+
| # # |
STRCMP
STRCMP(varchar str1, varchar str2)
命令说明:如果字符串
str1
、str1
相同,返回结果为0
。如果str1
根据当前排序顺序小于str2
,返回结果为-1
,否则返回结果为1
。返回值类型:BIGINT。
示例:
select strcmp('text', 'text2');
+-------------------------+
| strcmp('text', 'text2') |
+-------------------------+
| -1 |
SUBSTR/SUBSTRING
SUBSTRING(varchar str, bigint pos)
SUBSTRING(varchar str FROM pos)
SUBSTRING(varchar str, bigint pos, bigint len)
SUBSTRING(varchar str FROM pos FOR len)
命令说明:
SUBSTRING(varchar str, bigint pos)
、SUBSTRING(varchar str FROM pos)
返回从pos
位置开始到字符串结束的子串。如果pos<0
,则起始位置从字符串的末尾开始倒数。SUBSTRING(varchar str, bigint pos, bigint len)
、SUBSTRING(varchar str FROM pos FOR len)
返回从pos
位置开始长度为len
的子串。 如果pos<0
,则起始位置从字符串的末尾开始倒数。
返回值类型:VARCHAR。
示例:
select substr('helloworld', 6);
+-------------------------+
| substr('helloworld', 6) |
+-------------------------+
| world |
select substr('helloworld' from 6);
+-------------------------+
| substr('helloworld', 6) |
+-------------------------+
| world |
select substr('helloworld', 6, 3);
+----------------------------+
| substr('helloworld', 6, 3) |
+----------------------------+
| wor |
select substr('helloworld' from 6 for 3);
+----------------------------+
| substr('helloworld', 6, 3) |
+----------------------------+
| wor |
SUBSTRING_INDEX
SUBSTRING_INDEX(varchar str, varchar delim, bigint count)
命令说明:返回字符串
str
中最后一次分隔符delim
出现之前的子字符串。如果
count>0
,返回最后一次delim
左侧的所有内容,即从左侧开始计算。如果
count<0
,返回最后一次delim
右侧的所有内容,即从右侧开始计算。搜索
delim
时,SUBSTRING_INDEX
函数区分大小写。返回值类型:VARCHAR。
示例:
select substring_index('www.aliyun.com', '.', 2);
+-------------------------------------------+
| substring_index('www.aliyun.com', '.', 2) |
+-------------------------------------------+
| www.aliyun |
TRIM
TRIM([remstr FROM] str)
TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str)
命令说明:通过删除前导空格和尾随空格或删除与可选的指定字符串匹配的字符来剪裁字符串。
返回值类型:VARCHAR。
示例:
select trim(' bar ');
+------------------+
| trim(' bar ') |
+------------------+
| bar |
select trim(both 'x' from 'xxxbarxxx');
+------------------------+
| trim('x', 'xxxbarxxx') |
+------------------------+
| bar |
select trim(leading 'x' from 'xxxbarxxx');
+-------------------------+
| ltrim('x', 'xxxbarxxx') |
+-------------------------+
| barxxx |
select trim(trailing 'x' from 'xxxbarxxx');
+-------------------------+
| rtrim('x', 'xxxbarxxx') |
+-------------------------+
| xxxbar |
UPPER/UCASE
upper(varchar str)
命令说明:将字符串
str
中的字母转换为大写。返回值类型:VARCHAR。
示例:
select upper('Aliyun');
+-----------------+
| upper('Aliyun') |
+-----------------+
| ALIYUN |
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
评论