本文介绍AnalyticDB MySQL版支持的字符串函数。
- ASCII:返回字符或者字符串最左边字符对应的ASCII值。
- BIN:返回整数的二进制字符串。
- BIT_LENGTH:以位为单位返回字符串的长度。
- CHAR:返回整数对应的ASCII码组成的字符串。
- CHAR_LENGTH或CHARACTER_LENGTH:以字符为单位返回字符串的长度。
- CONCAT:连接字符串。
- CONCAT_WS:连接字符串,字符串中间以分隔串间隔。
- ELT:返回整数N指定的字符串。
- ENCRYPT:对字符串进行加密。
- EXPORT_SET:根据整数中的比特值,返回组合后的字符串。
- FIELD:返回指定字符串在字符串列表中的索引位置。
- FIND_IN_SET:返回字符或字符串在另一个字符串中的位置。
- FORMAT:将数字N格式化,返回字符串。
- FROM_BASE64:解码Base64编码的字符串并返回结果。
- FROM_UTF8:解码UTF-8编码的字符串并返回结果。
- 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:返回由指定数量空格组成的字符串。
- SPLIT:将字符串按分隔符进行分隔,并返回数组。
- SPLIT_PART:将字符串按分隔符分隔,并返回分隔后指定数组下标的子串。
- SPLIT_TO_MAP:通过
entryDelimiter
和keyValueDelimiter
拆分字符串,并返回map
。 - STRCMP:根据两个字符串的大小,返回0、1或者-1。
- SUBSTR或SUBSTRING:返回从指定位置开始的指定长度的子字符串。
- SUBSTRING_INDEX:返回字符串中最后一次分隔符出现之前的子字符串。
- TO_BASE64:返回字符串的Base64编码形式。
- TO_UTF8:返回字符串的UTF-8编码形式。
- TRIM:删除字符串前后所有的空格。
- UPPER或UCASE:将字符串转换为大写。
- UNHEX:将十六进制数字转换为字符。
ASCII
ascii(str)
- 命令说明:返回字符
str
或者字符串str
最左边字符对应的十进制ASCII值。 - 输入值类型:VARCHAR。
- 返回值类型:BIGINT。
- 示例:
- 语句如下:
SELECT ascii('2');
返回结果如下:+------------+ | ascii('2') | +------------+ | 50 | +------------+
- 语句如下:
SELECT ascii('dx');
返回结果如下:+-------------+ | ascii('dx') | +-------------+ | 100 | +-------------+
- 语句如下:
BIN
bin(N)
- 命令说明:返回
N
的二进制字符串。如果
N
为null
,则返回结果为NULL
。 - 输入值类型:BIGINT。
- 返回值类型:VARCHAR。
- 示例:
SELECT bin(12);
返回结果如下:+---------+ | bin(12) | +---------+ | 1100 | +---------+
BIT_LENGTH
bit_length(str)
- 命令说明:以位为单位返回字符串
str
的长度。 - 输入值类型:VARCHAR。
- 返回值类型:BIGINT。
- 示例:
- 语句如下:
SELECT bit_length('text');
返回结果如下:+--------------------+ | bit_length('text') | +--------------------+ | 32 | +--------------------+
- 语句如下:
SELECT bit_length('China');
返回结果如下:+---------------------+ | bit_length('China') | +---------------------+ | 40 | +---------------------+
- 语句如下:
CHAR
char(N1, N2, ...)
- 命令说明: 返回
N1
、N2
等整数对应的十进制ASCII码组成的字符串。 - 输入值类型:BIGINT。
- 返回值类型: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(str)
character_length(str)
- 命令说明: 以字符为单位返回字符串
str
的长度。一个汉字所对应的字符长度是
1
。 - 输入值类型:VARCHAR。
- 返回值类型:BIGINT。
- 示例:
- 语句如下:
SELECT char_length('China');
返回结果如下:+----------------------+ | char_length('China') | +----------------------+ | 5 | +----------------------+
- 语句如下:
SELECT char_length('abc');
返回结果如下:+--------------------+ | char_length('abc') | +--------------------+ | 3 | +--------------------+
- 语句如下:
CONCAT
concat(str 1, …, str n)
- 命令说明:字符串连接操作,其中任何一个参数为
null
,则返回值为null
。 - 输入值类型:VARCHAR。
- 返回值类型:VARCHAR。
- 示例:
- 语句如下:
SELECT concat('aliyun', ', ', 'analyticdb');
返回结果如下:+--------------------------------------+ | concat('aliyun', ', ', 'analyticdb') | +--------------------------------------+ | aliyun, analyticdb | +--------------------------------------+
- 语句如下:
SELECT concat('abc',null,'def');
返回结果如下:+--------------------------+ | concat('abc',null,'def') | +--------------------------+ | NULL | +--------------------------+
- 语句如下:
CONCAT_WS
concat_ws(separator, str 1, …, str n)
- 命令说明:字符串连接操作,第一个参数
separator
是其余参数的分隔符,连接时会跳过任何为null
值的字符串。 - 输入值类型:VARCHAR。
- 返回值类型: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(N, str 1, ...,str n);
- 命令说明:返回第
N
个字符串。若
N<1
或大于后面字符串参数的数量,则返回结果为null
。 - 输入值类型:
N
为BIGINT类型,str
为VARCHAR类型。 - 返回值类型:VARCHAR。
- 示例:
SELECT elt(4, 'Aa', 'Bb', 'Cc', 'Dd');
返回结果如下:+--------------------------------+ | elt(4, 'Aa', 'Bb', 'Cc', 'Dd') | +--------------------------------+ | Dd | +--------------------------------+
ENCRYPT
encrypt(x, y);
- 命令说明:对参数
x
进行加密,y
为Salt值。 - 输入值类型:
x
为VARBINARY类型,y
为VARCHAR类型。 - 返回值类型:VARBINARY
- 示例:
SELECT encrypt('abdABC123','key');
返回结果如下:+--------------------------------------------------------+ | encrypt('abdABC123','key') | +--------------------------------------------------------+ | 0x6B657A617A6D63496F2E614377 | +--------------------------------------------------------+
EXPORT_SET
export_set(bits, onstr, offstr [, separator[,number_of_bits]]);
- 命令说明:将
bits
转换为二进制值。其中:- 系统会从右到左检查二进制值,如果二进制值为1,则会被替换为
onstr
值;如果二进制值为0,则会被替换为offstr
值。 - 返回值之间由
separator
分隔。 number_of_bits
指定了检查位数,默认值为64。如果指定number_of_bits
大于64,则会被裁剪到64位;如果指定number_of_bits
为-1,则检查位数仍默认为64。
- 系统会从右到左检查二进制值,如果二进制值为1,则会被替换为
- 输入值类型:
bits
和number_of_bits
均为BIGINT类型,onstr
、offstr
和separator
均为VARCHAR类型。 - 返回值类型:VARCHAR。
- 示例:
- 将5转换为二进制,从右至左取其前两位的值,其中1用
a
表示,0用b
表示,a
和b
之间用逗号(,)分隔,语句如下:SELECT export_set(5,'a','b',',',2);
返回结果如下:+-----------------------------+ | export_set(5,'a','b',',',2) | +-----------------------------+ | a,b | +-----------------------------+
- 将6转换为二进制,从右至左取其前十位的值,其中1用
1
表示,0用0
表示,1
和0
之间用逗号(,)分隔,语句如下:SELECT export_set(6,'1','0',',',10);
返回结果如下:+------------------------------+ | export_set(6,'1','0',',',10) | +------------------------------+ | 0,1,1,0,0,0,0,0,0,0 | +------------------------------+
- 将5转换为二进制,从右至左取其前两位的值,其中1用
FIELD
FIELD(str, str 1, str 2,..., str n);
- 命令说明:返回
str
在str 1
、str 2
、str n
列表中的索引位置。 如果未找到str
,则返回0
。 - 输入值类型:VARCHAR。
- 返回值类型:BIGINT。
- 示例:
SELECT FIELD('Bb', 'Aa', 'Bb', 'Cc', 'Dd', 'Ff');
返回结果如下:+-------------------------------------------+ | FIELD('Bb', 'Aa', 'Bb', 'Cc', 'Dd', 'Ff') | +-------------------------------------------+ | 2 | +-------------------------------------------+
FIND_IN_SET
find_in_set(str, strlist)
- 命令说明:返回
str
在列表strlist
中的位置。如果
str
不在strlist
中或者strlist
是空字符串,返回结果为0
。如果
str
、strlist
任一参数为null
,返回结果为null
。 - 输入值类型:
str
和strlist
均为VARCHAR类型。 - 返回值类型:BIGINT。
- 示例:
SELECT find_in_set('b','a,b,c,d');
返回结果如下:+----------------------------+ | find_in_set('b','a,b,c,d') | +----------------------------+ | 2 | +----------------------------+
FORMAT
format(X, D)
- 命令说明:将数字
X
格式化为#,###,###.##
样式,舍入到D
小数位,并将结果作为字符串返回。如果
D
为0
,则返回结果没有小数点或小数部分。 - 输入值类型:
X
为DOUBLE类型,D
为BIGINT类型。 - 返回值类型:VARCHAR。
- 示例:
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 | +-------------+-------------+---------+
FROM_BASE64
from_base64(x)
- 命令说明:解码Base64编码的参数
x
并返回结果。 - 输入值类型:VARBINARY或VARCHAR。
- 返回值类型:VARBINARY。
- 示例:
- 输入的参数为VARCHAR类型,语句如下:
SELECT from_base64('Q2hpbmE=');
返回结果如下:+--------------------------------------------------+ | from_base64('Q2hpbmE=') | +--------------------------------------------------+ | 0x4368696E61 | +--------------------------------------------------+
说明 上述语句的返回值为VARBINARY类型,如需解析为原VARCHAR类型,您可以使用如下语句:SELECT cast(from_base64('Q2hpbmE=') AS varchar);
返回结果如下:+------------------------------------------+ | cast(from_base64('Q2hpbmE=') AS varchar) | +------------------------------------------+ | China | +------------------------------------------+
- 输入的参数为VARBINARY类型,语句如下
SELECT from_base64(cast(to_base64('China') AS varbinary));
返回结果如下:+--------------------------------------------------------------------------------------------------------+ | from_base64(cast(to_base64('China') AS varbinary)) | +--------------------------------------------------------------------------------------------------------+ | 0x4368696E61 | +--------------------------------------------------------------------------------------------------------+
- 输入的参数为VARCHAR类型,语句如下:
FROM_UTF8
from_utf8(x)
from_utf8(x, y)
- 命令说明:
from_utf8(x)
:解码UTF-8编码的x
并返回结果。from_utf8(x, y)
:解码非UTF-8编码的参数x
,并将其替换为指定的非法字符。说明y
可以不填。若不指定y
则默认返回�
。y
可以是非法字符本身(例如#
),也可以是非法字符所对应的ASCII码(例如35
)。
- 输入值类型:
x
为VARBINARY类型,y
为VARCHAR或BIGINT类型。 - 返回值类型:VARCHAR。
- 示例:
- 解码UTF-8编码的参数并返回结果,语句如下:
SELECT from_utf8(to_utf8('hello'));
返回结果如下:+-----------------------------+ | from_utf8(to_utf8('hello')) | +-----------------------------+ | hello | +-----------------------------+
- 解码非UTF-8编码的参数,语句如下:
SELECT from_utf8(unhex('58BF'));
返回结果如下:+--------------------------+ | from_utf8(unhex('58BF')) | +--------------------------+ | X� | +--------------------------+
- 解码非UTF-8编码的参数,并将其替换为非法字符
#
,语句如下:SELECT from_utf8(unhex('58BF'), '#');
返回结果如下:+-------------------------------+ | from_utf8(unhex('58BF'), '#') | +-------------------------------+ | X# | +-------------------------------+
- 解码非UTF-8编码的参数,并将其替换为非法字符,其中非法字符的ASCII码为35,语句如下:
SELECT from_utf8(unhex('58BF'), '35');
返回结果如下:+-------------------------------+ | from_utf8(unhex('58BF'), '35') | +-------------------------------+ | X# | +-------------------------------+
- 解码UTF-8编码的参数并返回结果,语句如下:
HEX
hex(x)
- 命令说明:将参数
x
转换为其所对应的十六进制格式的字符串。 - 输入值类型:BIGINT或VARCHAR。
- 返回值类型:VARCHAR。
- 示例:
- 输入值类型为BIGINT,语句如下:
SELECT hex(16);
返回结果如下:+---------+ | hex(16) | +---------+ | 10 | +---------+
- 输入值类型为VARCHAR,语句如下:
SELECT hex('16');
返回结果如下:+-----------+ | hex('16') | +-----------+ | 3136 | +-----------+
- 输入值类型为BIGINT,语句如下:
INSTR
instr(str, substr)
- 命令说明:返回字符串
str
中子字符串substr
首次出现的位置。 - 输入值类型:
str
和substr
均为VARCHAR类型。 - 返回值类型:BIGINT。
- 示例:
SELECT instr('foobarbar', 'bar');
返回结果如下:+---------------------------+ | instr('foobarbar', 'bar') | +---------------------------+ | 4 | +---------------------------+
LEFT
LEFT(str, len)
- 命令说明:返回字符串
str
中最左边的len
个字符。如果
str
或者len
为null
,则返回结果为null
。 - 输入值类型:
str
为VARCHAR类型,len
为BIGINT类型。 - 返回值类型:VARCHAR。
- 示例:
SELECT LEFT('foobarbar', 5);
返回结果如下:+----------------------+ | LEFT('foobarbar', 5) | +----------------------+ | fooba | +----------------------+
LENGTH或OCTET_LENGTH
length(str)
octet_length(str)
- 命令说明:返回字符串
str
的长度。 - 输入值类型:VARCHAR。
- 返回值类型:BIGINT。
- 示例:
SELECT length('aliyun');
返回结果如下:+------------------+ | length('aliyun') | +------------------+ | 6 | +------------------+
LIKE
expression [NOT] LIKE pattern [ESCAPE 'escape_char']
- 命令说明:
LIKE
运算符用于将字符串expression
与pattern
进行匹配,匹配成功返回1
,匹配失败返回0
。 其中:pattern
为通配符模式,通配符包括:%
:匹配任意长度的字符串。_
:匹配单个字符。
escape_char
:对pattern
中的%
、_
进行转义,使得转义字符后面的%
、_
不作通配符使用。
- 输入值类型:
expression
、pattern
均为VARCHAR类型。 - 返回值类型: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(substr, str)
locate(substr, str, pos)
- 命令说明:返回字符串
str
中首次出现substr
的位置信息,或者返回字符串str
中从指定位置pos
开始首次出现substr
的位置信息。如果
substr
不在str
中,返回结果为0
。如果
substr
或者str
为null
,返回结果为null
。 - 输入值类型:
str
和substr
均为VARCHAR类型,pos
为BIGINT类型。 - 返回值类型:BIGINT。
- 示例:
- 语句如下:
SELECT locate('bar', 'foobarbar');
返回结果如下:+----------------------------+ | locate('bar', 'foobarbar') | +----------------------------+ | 4 | +----------------------------+
- 语句如下:
SELECT locate('bar', 'foobarbar', 7);
返回结果如下:+-------------------------------+ | locate('bar', 'foobarbar', 7) | +-------------------------------+ | 7 | +-------------------------------+
- 语句如下:
LOWER或LCASE
lower(str)
lcase(str)
- 命令说明:将字符串
str
中的字母转换为小写。 - 返回值类型:VARCHAR。
- 返回值类型:VARCHAR。
- 示例:
SELECT lower('Aliyun');
返回结果如下:+-----------------+ | lower('Aliyun') | +-----------------+ | aliyun | +-----------------+
LPAD
lpad(str, len, padstr)
- 命令说明:将字符串
str
左边拼接padstr
直到长度达到len
,并返回拼接后的字符串。如果
str
长于len
,则返回值将缩短为len
个字符。 - 输入值类型:
str
和padstr
均为VARCHAR类型,len
为BIGINT类型。 - 返回值类型:VARCHAR。
- 示例:
SELECT lpad('Aliyun',9,'#');
返回结果如下:+----------------------+ | lpad('Aliyun',9,'#') | +----------------------+ | ###Aliyun | +----------------------+
LTRIM
ltrim(str)
- 命令说明:删除字符串
str
所有前导空格。 - 输入值类型:VARCHAR。
- 返回值类型:VARCHAR。
- 示例:
SELECT ltrim(' abc');
返回结果如下:+----------------+ | ltrim(' abc') | +----------------+ | abc | +----------------+
MAKE_SET
make_set(bits, str 1, str 2,...);
- 命令说明:返回一个设置值(包含由字符分隔的子字符串的字符串),其中包含具有相应位设置的字符串。
str 1
对应于0
位,str 2
对应于1
位,依此类推。str 1
,str 2
,...中的null
值不会附加到结果中。 - 输入值类型:
bits
为BIGINT类型,str
为VARCHAR类型。 - 返回值类型: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(str, pos, len)
- 命令说明:与SUBSTR或SUBSTRING功能相同,从字符串
str
的pos
开始返回len
长度的子字符串。 - 输入值类型:
str
为VARCHAR类型,pos
和len
均为BIGINT类型。 - 返回值类型:VARCHAR。
- 示例:
- 语句如下:
SELECT mid('Quadratically',5,6);
返回结果如下:+--------------------------+ | mid('Quadratically',5,6) | +--------------------------+ | ratica | +--------------------------+
- 语句如下:
SELECT mid('Sakila', -5, 3);
返回结果如下:+----------------------+ | mid('Sakila', -5, 3) | +----------------------+ | aki | +----------------------+
- 语句如下:
OCT
oct(N)
- 命令说明:返回整数
N
的八进制字符串表示形式。如果
N
为null
,返回结果为null
。 - 输入值类型:BIGINT。
- 返回值类型:VARCHAR。
- 示例:
SELECT oct(12);
返回结果如下:+---------+ | oct(12) | +---------+ | 14 | +---------+
ORD
ord(x)
- 命令说明:如果字符串
x
最左边的字符是多字节字符,则返回该字符的代码。 - 输入值类型:VARBINARY或VARCHAR。
- 返回值类型:LONG。
- 示例:
- 输入的参数为VARCHAR类型,语句如下:
SELECT ord('China');
返回结果如下:+--------------+ | ord('China') | +--------------+ | 67 | +--------------+
- 输入的参数为VARBINARY类型,语句如下
SELECT ord(cast('China' AS varbinary));
返回结果如下:+---------------------------------+ | ord(cast('China' AS varbinary)) | +---------------------------------+ | 67 | +---------------------------------+
- 输入的参数为VARCHAR类型,语句如下:
POSITION
position(substr IN str);
- 命令说明: 返回字符串
str
中子字符串substr
首次出现位置,位置从1
开始,如果未找到则返回0
。 - 输入值类型:
substr
和str
均为VARCHAR类型。 - 返回值类型:BIGINT。
- 示例:
SELECT position('bar' in 'foobarbar');
返回结果如下:+--------------------------------+ | position('bar' in 'foobarbar') | +--------------------------------+ | 4 | +--------------------------------+
REPEAT
repeat(str, count);
- 命令说明:返回由字符串
str
重复count
次数组成的字符串。如果
count<1
,则返回空字符串。如果
str
或count
为null
,则返回null
。 - 输入值类型:
str
为VARCHAR类型,count
为BIGINT类型。 - 返回值类型: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(str, from_str, to_str);
- 命令说明:将
str
中的from_str
内容替换为to_str
。 - 输入值类型:
str
、from_str
和to_str
均为VARCHAR类型。 - 返回值类型:VARCHAR。
-
示例:
SELECT replace('WWW.aliyun.com', 'W', 'w');
返回结果如下:+-------------------------------------+ | replace('WWW.aliyun.com', 'W', 'w') | +-------------------------------------+ | www.aliyun.com | +-------------------------------------+
REVERSE
reverse(str);
- 命令说明:返回
str
逆序后的字符串。 - 输入值类型:VARCHAR。
- 返回值类型:VARCHAR。
- 示例:
SELECT reverse('123456');
返回结果如下:+-------------------+ | reverse('123456') | +-------------------+ | 654321 | +-------------------+
RIGHT
RIGHT(str, len);
- 命令说明:返回字符串
str
中最右边的len
个字符。如果
str
或者len
为null
,返回结果为null
。 - 输入值类型:
str
为VARCHAR类型,len
为BIGINT类型。 - 返回值类型:VARCHAR。
- 示例:
SELECT RIGHT('abc',3);
返回结果如下:+----------------+ | RIGHT('abc',3) | +----------------+ | abc | +----------------+
RLIKE或REGEXP
expression RLIKE pattern;
expression REGEXP pattern;
- 命令说明:将字符串
expression
与pattern
进行正则匹配,匹配成功返回1
,否则返回0
。如果
expression
或者pattern
为null
,返回结果为null
。 - 输入值类型:
expression
和pattern
均为VARCHAR类型。 - 返回值类型:BOOLEAN。
- 示例:
- 语句如下:
SELECT 'Michael!' REGEXP '.*';
返回结果如下:+----------------------+ | Michael!' REGEXP '.* | +----------------------+ | 1 | +----------------------+
- 语句如下:
SELECT 'new*\n*line' REGEXP 'new\\*.\\*line';
返回结果如下:+-------------------------------------+ | new*\n*line' REGEXP 'new\\*.\\*line | +-------------------------------------+ | 0 | +-------------------------------------+
- 语句如下:
SELECT 'c' REGEXP '^[a-d]';
返回结果如下:+-------------------+ | c' REGEXP '^[a-d] | +-------------------+ | 1 | +-------------------+
- 语句如下:
RPAD
rpad(str, len, padstr)
- 命令说明:将字符串
str
右边拼接padstr
直到长度达到len
,并返回拼接后的字符串。如果
str
长于len
,则返回值将缩短为len
个字符。 - 输入值类型:
str
和padstr
均为VARCHAR类型,len
为BIGINT类型。 - 返回值类型:VARCHAR。
- 示例:
SELECT rpad('Aliyun',9,'#');
返回结果如下:+----------------------+ | rpad('Aliyun',9,'#') | +----------------------+ | Aliyun### | +----------------------+
RTRIM
rtrim(str)
- 命令说明:删除字符串
str
所有后置空格。 - 输入值类型:VARCHAR。
- 返回值类型:VARCHAR。
- 示例:
SELECT rtrim('barbar ');
返回结果如下:+--------------------+ | rtrim('barbar ') | +--------------------+ | barbar | +--------------------+
SPACE
space(N);
- 命令说明:返回由指定数量空格组成的字符串。
说明 您可以将该函数与
contact()
函数组合使用,方便展示返回结果。 - 输入值类型:BIGINT。
- 返回值类型:VARCHAR。
- 示例:
SELECT concat("#", space(6), "#");
返回结果如下:+----------------------------+ | concat("#", space(6), "#") | +----------------------------+ | # # | +----------------------------+
SPLIT
split(string, delimiter)
- 命令说明:将字符串
string
按分隔符delimiter
进行分隔,并返回数组。 - 输入值类型:
string
和delimiter
均为VARCHAR类型。 - 返回值类型:ARRAY<varchar>。
- 示例:
SELECT split('1#2#3', '#'), split('#1#2#3#', '#'), split('123', '#');
返回结果如下:+---------------------+-----------------------+-------------------+ | split('1#2#3', '#') | split('#1#2#3#', '#') | split('123', '#') | +---------------------+-----------------------+-------------------+ | ["1","2","3"] | ["","1","2","3",""] | ["123"] | +---------------------+-----------------------+-------------------+
SPLIT_PART
split_part(string, delimiter, index)
- 命令说明:将字符串
string
按分隔符delimiter
分隔,并返回分隔后数组下标为index
的子串。index
以1开头,如果大于字段数则返回NULL。 - 输入值类型:
string
和delimiter
均为VARCHAR类型,index
为BIGINT类型。 - 返回值类型:VARCHAR。
- 示例:
SELECT split_part('A#B#C', '#', 2), split_part('A#B#C', '#', 4);
返回结果如下:+-----------------------------+-----------------------------+ | split_part('A#B#C', '#', 2) | split_part('A#B#C', '#', 4) | +-----------------------------+-----------------------------+ | B | NULL | +-----------------------------+-----------------------------+
SPLIT_TO_MAP
split_to_map(string, entryDelimiter, keyValueDelimiter)
- 命令说明:通过
entryDelimiter
和keyValueDelimiter
拆分字符串并返回map
。entryDelimiter
将字符串分解为key-value
对,keyValueDelimiter
将每对key-value
分隔成key
和value
。 - 输入值类型:
string
、entryDelimiter
和keyValueDelimiter
均为VARCHAR类型。 - 返回值类型:MAP<varchar, varchar>。
- 示例:
SELECT split_to_map('k1:v1,k2:v2', ',', ':'),split_to_map('', ',', ':');
返回结果如下:+---------------------------------------+----------------------------+ | split_to_map('k1:v1,k2:v2', ',', ':') | split_to_map('', ',', ':') | +---------------------------------------+----------------------------+ | {"k1":"v1","k2":"v2"} | {} | +---------------------------------------+----------------------------+
STRCMP
strcmp(str 1, str 2);
- 命令说明:如果字符串
str 1
、str 2
相同,返回结果为0
。如果str 1
根据当前排序顺序小于str 2
,返回结果为-1
,否则返回结果为1
。 - 输入值类型:
str 1
和str 2
均为VARCHAR类型。 - 返回值类型:BIGINT。
- 示例:
SELECT strcmp('text', 'text2');
返回结果如下:+-------------------------+ | strcmp('text', 'text2') | +-------------------------+ | -1 | +-------------------------+
SUBSTR或SUBSTRING
substr(str, pos)
substr(str FROM pos)
substr(str, pos, len)
substr(str FROM pos FOR len)
substring(str, pos)
substring(str FROM pos)
substring(str, pos, len)
substring(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
,则起始位置从字符串的末尾开始倒数。
- 输入值类型:
str
为VARCHAR类型,pos
和len
均为BIGINT类型。 - 返回值类型:VARCHAR。
- 示例:
- 语句如下:
SELECT substr('helloworld', 6);
返回结果如下:+-------------------------+ | substr('helloworld', 6) | +-------------------------+ | world | +-------------------------+
- 语句如下:
SELECT substr('helloworld' FROM 6);
返回结果如下:+-----------------------------+ | substr('helloworld' FROM 6) | +-----------------------------+ | world | +-----------------------------+
- 语句如下:
SELECT substr('helloworld', 6, 3);
返回结果如下:+----------------------------+ | substr('helloworld', 6, 3) | +----------------------------+ | wor | +----------------------------+
- 语句如下:
SELECT substr('helloworld' from 6 for 3);
返回结果如下:+-----------------------------------+ | substr('helloworld' FROM 6 FOR 3) | +-----------------------------------+ | wor | +-----------------------------------+
- 语句如下:
SUBSTRING_INDEX
substring_index(str, delim, count)
- 命令说明:返回字符串
str
中最后一次分隔符delim
出现之前的子字符串。如果
count>0
,返回最后一次delim
左侧的所有内容,即从左侧开始计算。如果
count<0
,返回最后一次delim
右侧的所有内容,即从右侧开始计算。搜索
delim
时,SUBSTRING_INDEX
函数区分大小写。 - 输入值类型:
str
和delim
均为VARCHAR类型,count
为BIGINT类型。 - 返回值类型:VARCHAR。
- 示例:
SELECT substring_index('www.aliyun.com', '.', 2);
返回结果如下:+-------------------------------------------+ | substring_index('www.aliyun.com', '.', 2) | +-------------------------------------------+ | www.aliyun | +-------------------------------------------+
TO_BASE64
to_base64(x)
- 命令说明:返回参数
x
的Base64编码形式。 - 输入值类型:VARBINARY或VARCHAR。
- 返回值类型:VARCHAR。
- 示例:
- 输入的参数为VARCHAR类型,语句如下:
SELECT to_base64('China');
返回结果如下:+--------------------+ | to_base64('China') | +--------------------+ | Q2hpbmE= | +--------------------+
- 输入的参数为VARBINARY类型,语句如下
SELECT to_base64(cast('China' AS varbinary));
返回结果如下:+---------------------------------------+ | to_base64(cast('China' AS varbinary)) | +---------------------------------------+ | Q2hpbmE= | +---------------------------------------+
- 输入的参数为VARCHAR类型,语句如下:
TO_UTF8
to_utf8(x)
- 命令说明:返回参数
x
的UTF-8编码形式。 - 输入值类型:VARCHAR。
- 返回值类型:VARCHAR。
- 示例:
SELECT to_utf8('China');
返回结果如下:+------------------------------------+ | to_utf8('China') | +------------------------------------+ | 0x4368696E61 | +------------------------------------+
TRIM
trim([remstr FROM] str)
trim([{BOTH | LEADING | TRAILING} [remstr] FROM] str)
- 命令说明:通过删除前导空格和尾随空格或删除与可选的指定字符串
remstr
匹配的字符来剪裁字符串str
。 - 输入值类型:VARCHAR。
- 返回值类型:VARCHAR。
- 示例:
- 语句如下:
SELECT trim(' bar ');
返回结果如下:+------------------+ | trim(' bar ') | +------------------+ | bar | +------------------+
- 语句如下:
SELECT trim(BOTH 'x' FROM 'xxxbarxxx');
返回结果如下:+---------------------------------+ | trim(BOTH 'x' FROM 'xxxbarxxx') | +---------------------------------+ | bar | +---------------------------------+
- 语句如下:
SELECT trim(LEADING 'x' FROM 'xxxbarxxx');
返回结果如下:+------------------------------------+ | trim(LEADING 'x' FROM 'xxxbarxxx') | +------------------------------------+ | barxxx | +------------------------------------+
- 语句如下:
SELECT trim(TRAILING 'x' from 'xxxbarxxx');
返回结果如下:+-------------------------------------+ | trim(TRAILING 'x' from 'xxxbarxxx') | +-------------------------------------+ | xxxbar | +-------------------------------------+
- 语句如下:
UPPER或UCASE
upper(str)
ucase(str)
- 命令说明:将字符串
str
中的字母转换为大写。 - 输入值类型:VARCHAR。
- 返回值类型:VARCHAR。
- 示例:
SELECT upper('Aliyun');
返回结果如下:+-----------------+ | upper('Aliyun') | +-----------------+ | ALIYUN |
UNHEX
unhex(x);
- 命令说明:将参数
x
中的每对十六进制数字解释为一个数字,并将其转换为该数字表示的字符。 - 输入值类型:VARBINARY或VARCHAR。
- 返回值类型:VARBINARY。
- 示例:
- 输入的参数为VARCHAR类型,语句如下:
SELECT unhex(hex('China'));
返回结果如下:+------------------------------------------+ | unhex(hex('China')) | +------------------------------------------+ | 0x4368696E61 | +------------------------------------------+
说明 上述语句的返回值为VARBINARY类型,如需解析为原VARCHAR类型,您可以使用如下语句:SELECT cast(unhex(hex('China')) AS varchar);
返回结果如下:+--------------------------------------+ | cast(unhex(hex('China')) AS varchar) | +--------------------------------------+ | China | +--------------------------------------+
- 输入的参数为VARBINARY类型,语句如下
SELECT unhex(cast(hex('China') AS varbinary));
返回结果如下:+--------------------------------------------------------------------------------+ | unhex(cast(hex('China') AS varbinary)) | +--------------------------------------------------------------------------------+ | 0x4368696E61 | +--------------------------------------------------------------------------------+
- 输入的参数为VARCHAR类型,语句如下: