全部产品
云市场

字符串函数

更新时间:2019-04-29 15:51:48

  • 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

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

  • 返回值类型:VARCHAR

  • 示例:

    1. SELECT Chr(65), Chr(66);
    2. +-------+-------+
    3. | _col0 | _col1 |
    4. +-------+-------+
    5. | A | B |

CONCAT

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

  • 返回值类型:VARCHAR

  • 示例:

    1. SELECT Concat('aliyun', ', ', 'analyticdb')
    2. +--------------------------------------+
    3. | _col0 |
    4. +--------------------------------------+
    5. | aliyun, analyticdb

GROUP_CONCAT

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

  • 返回值类型:VARCHAR

  • 示例:

    1. SELECT * FROM user
    2. +-----------------------+
    3. | id |username|
    4. +-----------------------+
    5. | 4 | lucy |
    6. | 3 | Lucy |
    7. | 2 | lily |
    8. | 1 | lily |
    9. select group_concat(distinct username)from user GROUP BY 'username' ;
    10. +-----------------------+
    11. | _col0 |
    12. +-----------------------+
    13. | Lucy,Lily |

LENGTH

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

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

  • 返回值类型:BIGINT

  • 示例:

    1. SELECT length('aliyun')
    2. +--------------------+
    3. | _col0 |
    4. +--------------------+
    5. | 6

    LOWER

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

  • 返回值类型:VARCHAR

  • 示例:

    1. SELECT lower('Aliyun');
    2. +--------------------+
    3. | _col0 |
    4. +--------------------+
    5. | aliyun

UPPER

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

  • 返回值类型:VARCHAR

  • 示例:

    1. SELECT lower('Aliyun');
    2. +--------------------+
    3. | _col0 |
    4. +--------------------+
    5. | ALIYUN

LPAD

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

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

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

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

  • 返回值类型:VARCHAR

  • 示例:

    1. SELECT Lpad('Aliyun',9,'#');
    2. +-------------------------+
    3. | _col0 |
    4. +-------------------------+
    5. | ###Aliyun

RPAD

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

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

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

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

  • 返回值类型:VARCHAR

  • 示例:

    1. SELECT rpad('Aliyun',9,'#');
    2. +------------------------+
    3. | _col0 |
    4. +------------------------+
    5. | Aliyun###

TRIM/LTRIM/RTRIM

  1. trim(string)
  2. ltrim(string)
  3. rtrim(string)
  • 命令说明:

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

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

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

  • 返回值类型:VARCHAR

  • 示例:

    1. SELECT Trim(' 135 544 '), Ltrim(' 135 544 '), Rtrim(' 135 544 ');
    2. +---------+-------------+------------+
    3. | _col0 | _col1 | _col2 |
    4. +---------+-------------+------------+
    5. | 135 544 | 135 544 | 135 544 |

REPLACE

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

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

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

  • 返回值类型:VARCHAR

  • 示例:

    1. SELECT REPLACE('helloworld', 'world'),
    2. REPLACE('helloworld', 'world', ' World!!!'),
    3. REPLACE('helloworld', 'notFound', ' World');
    4. +-------+----------------+------------+
    5. | _col0 | _col1 | _col2 |
    6. +-------+----------------+------------+
    7. | hello | hello World!!! | helloworld |

REVERSE

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

  • 返回值类型:VARCHAR

  • 示例:

    1. SELECT Reverse('123456'), Reverse(''), Reverse(Cast (NULL AS VARCHAR));
    2. +--------+-------+-------+
    3. | _col0 | _col1 | _col2 |
    4. +--------+-------+-------+
    5. | 654321 | | NULL |

SPLIT

  1. split(string, delimiter)
  2. split(string, delimiter, limit)
  3. split_part(string, delimiter, index)
  4. split_to_map(string, entryDelimiter, keyValueDelimiter)
  • 命令说明:

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

    • split(string, delimiter)将字符串string按分隔符delimiter分隔,并返回按limit大小限制的数组,且limit为正数。数组中的最后一个元素包含字符串中的所有剩余内容。

    • 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>

  • 示例:

  1. SELECT Split('1#2#3', '#'), Split('#1#2#3#', '#'),
  2. Split('123', '#'), Split('1#2#3', '#', 2);
  3. | _col0 | _col1 | _col2 | _col3 |
  4. +-----------+---------------+-------+----------+
  5. | [1, 2, 3] | [, 1, 2, 3, ] | [123] | [1, 2#3] |
  6. SELECT Split_part('A#B#C', '#', 2),
  7. Split_part('A#B#C', '#', 4);
  8. +---------------------+-------------------------+
  9. | _col0 | _col1 |
  10. +---------------------+-------------------------+
  11. | B | NULL |
  12. SELECT Split_to_map('k1:v1,k2:v2', ',', ':'),
  13. Split_to_map('', ',', ':');
  14. +---------------------+-------------------------+
  15. | _col0 | _col1 |
  16. +---------------------+-------------------------+
  17. | {k1=v1, k2=v2} | {} |

POSITION

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

  • 返回值类型:BIGINT

  • 示例:

    1. SELECT position('helloworld', 'o'),
    2. position('helloworld', 'or'),
    3. position('helloworld', 'x');
    4. +-------+-------+-------+
    5. | _col0 | _col1 | _col2 |
    6. +-------+-------+-------+
    7. | 5 | 7 | 0 |

CHAR

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

  • 返回值类型:VARCHAR

  • 示例:

    1. SELECT CHAR(97,110,97,108,121,116,105,99,100,98);
    2. +------------+
    3. | _col0 |
    4. +------------+
    5. | analyticdb |

HEX

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

  • 返回值类型:VARCHAR

  • 示例:

    1. SELECT Hex(10),
    2. Hex(1234);
    3. +-------+-------+
    4. | _col0 | _col1 |
    5. +-------+-------+
    6. | a | 4d2 |

INITCAP

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

  • 返回值类型:VARCHAR

  • 示例:

    1. SELECT Initcap('the soap'),
    2. Initcap('the,soap'),
    3. Initcap('thesoap');
    4. +----------+----------+---------+
    5. | _col0 | _col1 | _col2 |
    6. +----------+----------+---------+
    7. | The Soap | The,Soap | Thesoap |

INSTR

  1. instr(string, substring)
  2. instr(string, substring, position)
  3. instr(string, substring, position, occurence)
  • 命令说明:

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

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

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

  • 返回值类型:BIGINT

  • 示例:

    1. SELECT Instr('CORPORATE FLOOR', 'OR'),
    2. Instr('CORPORATE FLOOR', 'OR', 3),
    3. Instr('CORPORATE FLOOR', 'OR', 3, 2);
    4. +----------+----------+---------+
    5. | _col0 | _col1 | _col2 |
    6. +----------+----------+---------+
    7. | 2 | 5 | 14 |

ASCII

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

  • 返回值类型:BIGINT

  • 示例:

    1. SELECT Ascii('d'),
    2. Ascii('dx'),
    3. Ascii('1');
    4. +-------+-------+-------+
    5. | _col0 | _col1 | _col2 |
    6. +-------+-------+-------+
    7. | 100 | 100 | 49 |

MID

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

  • 返回值类型:VARCHAR

  • 示例:

    1. SELECT Mid('helloworld', 6, 3),
    2. Mid('helloworld', -6, 2),
    3. Mid('helloworld', -6, 2);
    4. +-------+-------+-------+
    5. | _col0 | _col1 | _col2 |
    6. +-------+-------+-------+
    7. | wor | ow | ow |

REPEAT

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

  • 返回值类型:VARCHAR

  • 示例:

    1. SELECT Repeat('a', 3),
    2. Repeat('xyz', 2),
    3. Repeat(Cast(NULL AS VARCHAR), 2);
    4. +-------+--------+-------+
    5. | _col0 | _col1 | _col2 |
    6. +-------+--------+-------+
    7. | aaa | xyzxyz | NULL |

STRPOS

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

  • 返回值类型:BIGINT

  • 示例:

    1. SELECT Strpos('helloworld', 'o'),
    2. Strpos('helloworld', 'or'),
    3. Strpos('helloworld', 'x');
    4. +-------+-------+-------+
    5. | _col0 | _col1 | _col2 |
    6. +-------+-------+-------+
    7. | 5 | 7 | 0 |

SUBSTR/SUBSTRING

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

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

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

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

  • 返回值类型:VARCHAR

  • 示例:

    1. SELECT Substr('helloworld', 6),
    2. Substr('helloworld', 6, 3),
    3. Substr('helloworld', -6),
    4. Substr('helloworld', -6, 2),
    5. Substring('helloworld', -6, 2);
    6. +-------+-------+--------+-------+-------+
    7. | _col0 | _col1 | _col2 | _col3 | _col4 |
    8. +-------+-------+--------+-------+-------+
    9. | world | wor | oworld | ow | ow |

TRANSLATE

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

  • 返回值类型:VARCHAR

  • 示例:

    1. SELECT Translate('acbd', 'ab', 'AB'),
    2. Translate('acbdaa', 'ab', 'AB'),
    3. Translate('acbd', 'abc', 'A'),
    4. Translate('acbd', 'abc', '');
    5. +-------+--------+-------+-------+
    6. | _col0 | _col1 | _col2 | _col3 |
    7. +-------+--------+-------+-------+
    8. | AcBd | AcBdAA | Ad | d |