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')

    返回值如下:

    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。
  • 示例:
      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('helloworld', 'o'), 
             position('helloworld', 'or'), 
             position('helloworld', 'x'); 

    返回值如下:

      +-------+-------+-------+
      | _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  |