字符串函数
字符串函数用于字符串处理,例如转换大小写、去除空格、提取子串等。本文介绍云原生数据仓库 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:返回字符串中第count个分隔符之前或之后的子字符串。
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。
输入值类型:
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 | +------------------------------+
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');返回结果如下:
sq+-------------------------------------------+ | 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 | +--------------------------------------------------------------------------------------------------------+
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# | +-------------------------------+
HEX
hex(x)命令说明:将参数
x转换为其所对应的十六进制格式的字符串。输入值类型:BIGINT或VARCHAR。
返回值类型:VARCHAR。
示例:
输入值类型为BIGINT,语句如下:
SELECT hex(16);返回结果如下:
+---------+ | hex(16) | +---------+ | 10 | +---------+输入值类型为VARCHAR,语句如下:
SELECT hex('16');返回结果如下:
+-----------+ | hex('16') | +-----------+ | 3136 | +-----------+
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 | +---------------------------------+
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中第count个分隔符(delim)之前或之后的子字符串。如果
count>0,返回第count个分隔符(delim)左侧的所有内容,即从左侧开始计算。如果
count<0,返回第count个分隔符(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= | +---------------------------------------+
TO_UTF8
to_utf8(x)命令说明:返回参数
x的UTF-8编码形式。输入值类型:VARCHAR。
返回值类型:VARCHAR。
示例:
SELECT from_utf8(to_utf8('China'));返回结果如下:
+-----------------------------+ | from_utf8(to_utf8('China')) | +-----------------------------+ | China | +-----------------------------+
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')) | +------------------------------------------+ | China | +------------------------------------------+说明上述语句的返回值为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)) | +------------------------------------------+ | China | +------------------------------------------+