文档

字符串函数(2.0版)

更新时间:

AnalyticDB for MySQL支持以下字符串函数。

  • CHR:返回Unicode编码对应的字符串。

  • CONCAT:连接字符串。

  • GROUP_CONCAT:通常与group by一起使用,用于将group by产生的同一个分组中的值连接起来,返回一个字符串结果。

  • LENGTH:返回字符串长度。

  • LOWER:将字符串转换为小写。

  • UPPER:将字符串转换为大写。

  • LPAD:左拼接字符串。

  • RPAD:右拼接字符串。

  • TRIM/LTRIM/RTRIM:删除字符串前后所有的空格/前导空格/后置空格。

  • REPLACE:删除字符串中的所有指定子串。

  • REVERSE:将字符串逆序。

  • SPLIT:将字符串按分隔符进行分隔,并返回数组。

  • POSITION:返回字符串中子字符串的第一次出现的起始位置。

  • CHAR:返回十进制数字对应的字符形成的字符串。

  • HEX:返回十六进制字符串。

  • INITCAP:将字符串首字符转换为大写。

  • INSTR:返回指定子串首次(或者指定次数)出现在字符串中的位置。

  • ASCII:返回字符或者字符串最左边字符对应的ASCII值。

  • MID:作用同SUBSTR/SUBSTRING。

  • REPEAT:返回字符串重复多次的字符串。

  • STRPOS:返回字符串中子字符串的第一次出现的起始位置。

  • SUBSTR/SUBSTRING:返回一个从指定位置开始的指定长度的子字符串。

  • TRANSLATE将字符表达式值中,指定字符替换为新字符。

CHR

chr(n)
  • 命令说明:返回Unicode编码为n的字符。

  • 返回值类型:VARCHAR。

  • 示例:

     SELECT Chr(65),  Chr(66);

    返回值如下:

    +-------+-------+
    | _col0 | _col1 |
    +-------+-------+
    | A     | B     |
    +-------+-------+

CONCAT

concat(string1, …, stringN)
  • 命令说明:字符串连接操作,与标准SQL的连接运算符||功能相同。

  • 返回值类型:VARCHAR。

  • 示例:

    SELECT Concat('aliyun', ', ', 'analyticdb')

    返回值如下:

    +--------------------------------------+
    | _col0                                |
    +--------------------------------------+
    | aliyun, analyticdb                   |
    +--------------------------------------+

GROUP_CONCAT

group_concat([distinct] 要连接的字段)
  • 命令说明:group_concat函数通常与group by一起使用,用于将group by产生的同一个分组中的值连接起来,返回一个字符串结果。通过使用distinct可以排除重复值。

  • 返回值类型:VARCHAR。

  • 示例:

    SELECT * FROM user

    返回值如下:

    +-------------+
    | id |username|
    +-------------+
    | 4  |  lucy  |
    | 3  |  Lucy  |
    | 2  |  lily  |
    | 1  |  lily  |
    +-------------+
    select group_concat(distinct username)from user GROUP BY 'username' ;

    返回值如下:

    +-----------------------+
    |      _col0            |
    +-----------------------+
    |    Lucy,Lily          |
    +-----------------------+

LENGTH

length(string)
  • 命令说明:返回字符串string的长度。

    说明

    MySQL中一个中文字符length为3,分析型数据库MySQL版中为1。

  • 返回值类型:BIGINT。

  • 示例:

    SELECT length('aliyun') 

    返回值如下:

    +--------------------+
    | _col0              |
    +--------------------+
    | 6                  |
    +--------------------+

LOWER

lower(string)
  • 命令说明:将字符串string中的字母转换为小写。

  • 返回值类型:VARCHAR。

  • 示例:

    SELECT lower('Aliyun');

    返回值如下:

    +--------------------+
    | _col0              |
    +--------------------+
    | aliyun             |
    +--------------------+

UPPER

upper(string)
  • 命令说明:将字符串string中的字母转换为大写。

  • 返回值类型:VARCHAR。

  • 示例:

    SELECT upper('Aliyun');

    返回值如下:

    +-----------+
    | _col0     |
    +-----------+
    | ALIYUN    |
    +-----------+

LPAD

lpad(string, size, padstring)
  • 命令说明:

    • 将字符串string左边拼接padstring直到长度达到size,并返回填充后的字符串。

    • 如果size比string长度小,则截断。size不能为负数,padstring非空。

      说明

      MySQL中一个中文字符length为3,分析型数据库MySQL版中为1。

  • 返回值类型:VARCHAR。

  • 示例:

     SELECT Lpad('Aliyun',9,'#');

    返回值如下:

    +-----------+
    | _col0     |
    +-----------+
    | ###Aliyun |
    +-----------+

RPAD

rpad(string, size, padstring)
  • 命令说明:

    • 将字符串string右边拼接padstring直到长度达到size,并返回填充后的字符串。

    • 如果size比string长度小,则截断。size不能为负数,padstring非空。

      说明

      MySQL中一个中文字符length为3,分析型数据库MySQL版中为1。

  • 返回值类型:VARCHAR。

  • 示例:

    SELECT rpad('Aliyun',9,'#');

    返回值如下:

    +--------------+
    | _col0        |
    +--------------+
    | Aliyun###    |
    +--------------+

TRIM/LTRIM/RTRIM

trim(string)
ltrim(string)
rtrim(string)
  • 命令说明:

    • trim(string):删除字符串string前后所有的空格。

    • ltrim(string):删除字符串string所有前导空格。

    • rtrim(string):删除字符串string所有后置空格。

  • 返回值类型:VARCHAR。

  • 示例:

      SELECT Trim('   135 544    '), Ltrim('   135 544    '), Rtrim('   135 544    ');

    返回值如下:

    +---------+-------------+------------+
    | _col0   | _col1       | _col2      |
    +---------+-------------+------------+
    | 135 544 | 135 544     |    135 544 |
    +---------+-------------+------------+

REPLACE

replace(string, search)
replace(string, search, replace)
  • 命令说明:

    • replace(string, search):删除字符串string中的所有search子串。

    • replace(string, search, replace):将字符串string中所有子串search替换为replace。

  • 返回值类型:VARCHAR。

  • 示例:

    S  SELECT REPLACE('helloworld', 'world'), 
             REPLACE('helloworld', 'world', ' World!!!'), 
             REPLACE('helloworld', 'notFound', ' World');

    返回值如下:

    +-------+----------------+------------+
    | _col0 | _col1          | _col2      |
    +-------+----------------+------------+
    | hello | hello World!!! | helloworld |
    +-------+----------------+------------+

REVERSE

reverse(string)
  • 命令说明:返回string逆序后的字符串。

  • 返回值类型:VARCHAR。

  • 示例:

     SELECT Reverse('123456'),  Reverse(''), Reverse(Cast (NULL AS VARCHAR)); 

    返回值如下:

    +--------+-------+-------+
    | _col0  | _col1 | _col2 |
    +--------+-------+-------+
    | 654321 |       | NULL  |
    +--------+-------+-------+

SPLIT

split(string, delimiter)
split_part(string, delimiter, index)
split_to_map(string, entryDelimiter, keyValueDelimiter)
  • 命令说明:

    • split(string, delimiter):将字符串string按分隔符delimiter进行分隔,并返回数组。

    • split_part(string, delimiter, index):将字符串string按分隔符delimiter分隔,并返回分隔后数组下标为index的子串,index以1开头,如果大于字段数则返回null。

    • split_to_map(string, entryDelimiter, keyValueDelimiter):通过entryDelimiter和keyValueDelimiter拆分字符串并返回map。entryDelimiter将字符串分解为key-value对,keyValueDelimiter将每对分隔成key、value。

  • 返回值类型:VARCHAR或map<varchar, varchar>。

  • 示例:

    SELECT Split('1#2#3', '#'), Split('#1#2#3#', '#'),  
               Split('123', '#');

    返回值如下:

    +-----------+---------------+-----------+
    | _col0     | _col1         | _col2     |
    +-----------+---------------+-----------+
    | [1, 2, 3] | [, 1, 2, 3, ] | [123]     |
    +-----------+---------------+-----------+
        SELECT Split_part('A#B#C', '#', 2), 
               Split_part('A#B#C', '#', 4);

    返回值如下:

    +---------------------+-------------------------+
    | _col0               | _col1                   |
    +---------------------+-------------------------+
    | B                   | NULL                    |
    +---------------------+-------------------------+
        SELECT Split_to_map('k1:v1,k2:v2', ',', ':'), 
               Split_to_map('', ',', ':'); 

    返回值如下:

    +---------------------+-------------------------+
    | _col0               | _col1                   |
    +---------------------+-------------------------+
    | {k1=v1, k2=v2}      | {}                      |
    +---------------------+-------------------------+

POSITION

position(substring IN string)
  • 命令说明: 返回字符串中子字符串的第一次出现的起始位置,位置从1开始,如果未找到则返回0。

  • 返回值类型:BIGINT。

  • 示例:

      SELECT position('o' IN 'helloworld'), 
             position('or' IN'helloworld'), 
             position('x' IN 'helloworld'); 

    返回值如下:

    +-------+-------+--------+
    | _col0 | _col1 | _col2  |
    +-------+-------+--------+
    |  5    |  7    | 0      |
    +-------+-------+--------+

CHAR

char(N,N,..)
  • 命令说明: 返回每个数字代表的字符组成的字符串。

  • 返回值类型:VARCHAR。

  • 示例:

      SELECT CHAR(97,110,97,108,121,116,105,99,100,98);

    返回值如下:

    +------------+
    | _col0      |
    +------------+
    | analyticdb |
    +------------+

HEX

hex(bigint)
  • 命令说明:返回16进制字符串。

  • 返回值类型:VARCHAR。

  • 示例:

      SELECT Hex(10), 
             Hex(1234); 

    返回值如下:

    +-------+-------+
    | _col0 | _col1 |
    +-------+-------+
    | a     | 4d2   |
    +-------+-------+

INITCAP

initcap(string)
  • 命令说明:输入字符串首字符转大写。

  • 返回值类型:VARCHAR。

  • 示例:

      SELECT Initcap('the soap'), 
             Initcap('the,soap'), 
             Initcap('thesoap'); 

    返回值如下:

    +----------+----------+---------+
    | _col0    | _col1    | _col2   |
    +----------+----------+---------+
    | The Soap | The,Soap | Thesoap |
    +----------+----------+---------+

INSTR

instr(string, substring)
instr(string, substring, position)
instr(string, substring, position, occurrence)
  • 命令说明:

    instr(string, substring):返回string中匹配substring的第一个位置信息。

    instr(string, substring, position):从string字符的第position位置开始搜索,返回string中匹配substring的位置信息。

    instr(string, substring, position, occurrence):从string字符的第position位置开始搜索第occurrence次出现的位置,返回string中匹配substring的位置信息。

  • 返回值类型:BIGINT。

  • 示例:

      SELECT Instr('CORPORATE FLOOR', 'OR'), 
             Instr('CORPORATE FLOOR', 'OR', 3), 
             Instr('CORPORATE FLOOR', 'OR', 3, 2); 

    返回值如下:

    +----------+----------+---------+
    | _col0    | _col1    | _col2   |
    +----------+----------+---------+
    | 2        | 5        | 14      |
    +----------+----------+---------+

ASCII

ASCII(string)
  • 命令说明:返回字符或者字符串最左边字符对应的ASCII值。

  • 返回值类型:BIGINT。

  • 示例:

      SELECT Ascii('d'), 
             Ascii('dx'), 
             Ascii('1'); 

    返回值如下:

    +-------+-------+-------+
    | _col0 | _col1 | _col2 |
    +-------+-------+-------+
    |   100 |   100 |    49 |
    +-------+-------+-------+

MID

MID(string, start, length)
  • 命令说明:作用同substr(string, start, length)。

  • 返回值类型:VARCHAR。

  • 示例:

      SELECT Mid('helloworld', 6, 3),  
             Mid('helloworld', -6, 2); 

    返回值如下:

    +-------+-------+
    | _col0 | _col1 |
    +-------+-------+
    | wor   | ow    |
    +-------+-------+

REPEAT

repeat(string,int)
  • 命令说明:返回重复多次的字符串。

  • 返回值类型:VARCHAR。

  • 示例:

      SELECT Repeat('a', 3), 
             Repeat('xyz', 2), 
             Repeat(Cast(NULL AS VARCHAR), 2);

    返回值如下:

    +-------+--------+-------+
    | _col0 | _col1  | _col2 |
    +-------+--------+-------+
    | aaa   | xyzxyz | NULL  |
    +-------+--------+-------+

STRPOS

strpos(string, substring)
  • 命令说明:返回字符串中子字符串的第一次出现的起始位置,位置从1开始 ,如果未找到则返回0。

  • 返回值类型:BIGINT。

  • 示例:

      SELECT Strpos('helloworld', 'o'), 
             Strpos('helloworld', 'or'), 
             Strpos('helloworld', 'x'); 

    返回值如下:

    +-------+-------+-------+
    | _col0 | _col1 | _col2 |
    +-------+-------+-------+
    |     5 |     7 |     0 |
    +-------+-------+-------+

SUBSTR/SUBSTRING

substr(string, start)
substr(string, start, length)
  • 命令说明:

    • substr(string, start):返回从start位置开始到字符串结束的子串。位置从1开始,如果start为负数,则起始位置从字符串的末尾开始倒数。

    • substr(string, start, length)返回从start位置开始长度为length的子串,位置从1开始。如果start为负数,则起始位置从字符串的末尾开始倒数。

      说明

      MySQL中一个中文字符的length为3,分析型数据库MySQL版中为1。

  • 返回值类型:VARCHAR。

  • 示例:

      SELECT Substr('helloworld', 6), 
             Substr('helloworld', 6, 3), 
             Substr('helloworld', -6), 
             Substr('helloworld', -6, 2),
             Substring('helloworld', -6, 2); 

    返回值如下:

    +-------+-------+--------+-------+-------+
    | _col0 | _col1 | _col2  | _col3 | _col4 |
    +-------+-------+--------+-------+-------+
    | world | wor   | oworld | ow    | ow    |
    +-------+-------+--------+-------+-------+

TRANSLATE

translate(expr, from_string, to_string)
  • 命令说明:将expr字符串中,符合from_string的字符,替换为to_string。

  • 返回值类型:VARCHAR。

  • 示例:

      SELECT Translate('acbd', 'ab', 'AB'), 
             Translate('acbdaa', 'ab', 'AB'), 
             Translate('acbd', 'abc', 'A'), 
             Translate('acbd', 'abc', ''); 

    返回值如下:

    +-------+--------+-------+-------+
    | _col0 | _col1  | _col2 | _col3 |
    +-------+--------+-------+-------+
    | AcBd  | AcBdAA | Ad    |    d  |
    +-------+--------+-------+-------+
  • 本页导读 (1)
文档反馈