MAPREDUCE服务 MRS-字符串函数和运算符:字符串函数

时间:2024-04-10 09:06:17

字符串函数

这些函数假定输入字符串包含有效的UTF-8编码的Unicode代码点。不会显式检查UTF-8数据是否有效,对于无效的UTF-8数据,函数可能会返回错误的结果。可以使用from_utf8来更正无效的UTF-8数据。

此外,这些函数对Unicode代码点进行运算,而不是对用户可见的字符(或字形群集)进行运算。某些语言将多个代码点组合成单个用户感观字符(这是语言书写系统的基本单位),但是函数会将每个代码点视为单独的单位。

lower和upper函数不执行某些语言所需的区域设置相关、上下文相关或一对多映射。

  • chr(n) → varchar

    描述:返回Unicode编码值为n的字符值。

    select chr(100); --d
  • char_length(string) → bigint

    参考length(string)

  • character_length(string) → bigint

    参考length(string)

  • codepoint(string) → integer

    描述:返回单个字符对应的Unicode编码。

    select codepoint('d'); --100
  • concat(string1, string2) → varchar

    描述:字符串连接。

    select concat('hello','world'); -- helloworld
  • concat_ws(string0, string1, ..., stringN) → varchar

    描述:将string1、string2、...,stringN,以string0作为分隔符串联成一个字符串。如果string0为null,则返回值为null。分隔符后的参数如果是NULL值,将会被跳过。

    select concat_ws(',','hello','world'); -- hello,world
    select concat_ws(NULL,'def'); --NULL
    select concat_ws(',','hello',NULL,'world'); -- hello,world
    select concat_ws(',','hello','','world'); -- hello,,world
  • concat_ws(string0, array(varchar)) → varchar

    描述:将数组中的元素以string0为分隔符进行串联。如果string0为null,则返回值为null。数组中的任何null值都将被跳过。

    select concat_ws(NULL,ARRAY['abc']);--NULL
    select concat_ws(',',ARRAY['abc',NULL,NULL,'xyz']); -- abc,xyz
    select concat_ws(',',ARRAY['hello','world']); -- hello,world
  • decode(binary bin, string charset) →varchar

    描述:根据给定的字符集将第一个参数编码为字符串,支持的字符集包括('UTF-8', 'UTF-16BE', 'UTF-16LE', 'UTF-16'),当第一个参数为null,将返回null。

    select decode(X'70 61 6e 64 61','UTF-8');
     _col0 
    -------
     panda 
    (1 row)
     
    select decode(X'00 70 00 61 00 6e 00 64 00 61','UTF-16BE');
     _col0 
    -------
     panda 
    (1 row)
  • encode(string str, string charset) →binary

    描述:字符串按照给定的字符集进行编码。

    select encode('panda','UTF-8');
         _col0      
    ----------------
     70 61 6e 64 61 
    (1 row)
  • find_in_set (string str, string strList) →int

    描述:返回str在逗号分隔的strList中第一次出现的位置。当有参数为null时,返回值也为null。

    select find_in_set('ab', 'abc,b,ab,c,def'); -- 3
  • format_number(number x, int d) →string

    描述:将数字x格式化为'#,###,###.##',保留d位小数,以字符串的形式返回结果。

    select format_number(541211.212,2); -- 541,211.21
  • format(format,args...) → varchar

    描述:参见Format

  • locate(string substr, string str, int pos]) →int

    描述:返回子串在字符串的第pos位后第一次出现的位置。没有满足条件的返回0。

    select locate('aaa','bbaaaaa',6);-- 0
    select locate('aaa','bbaaaaa',1);-- 3
    select locate('aaa','bbaaaaa',4);-- 4
  • length(string) → bigint

    描述:返回字符串的长度。

    select length('hello');-- 5
  • levenshtein_distance(string1, string2) → bigint

    描述:计算string1和string2的Levenshtein距离,即将string转为string2所需要的单字符编辑(包括插入、删除或替换)最少次数。

    select levenshtein_distance('helo word','hello,world'); -- 3
  • hamming_distance(string1, string2) → bigint

    描述:返回字符串1和字符串2的汉明距离,即对应位置字符不同的数量。 请注意,两个字符串的长度必须相同。

    select hamming_distance('abcde','edcba');-- 4
  • instr(string,substring) → bigint
    描述:查找substring 在string中首次出现的位置。
    select instr('abcde', 'cd');--3
  • levenshtein(string1, string2) → bigint 参考levenshtein_distance(string1, string2)
  • levenshtein_distance(string1, string2) → bigint

    描述:返回字符串1和字符串2的Levenshtein编辑距离,即将字符串1更改为字符串2所需的最小单字符编辑(插入,删除或替换)次数。

    select levenshtein_distance('apple','epplea');-- 2
  • lower(string) → varchar

    描述:将字符转换为小写。

    select lower('HELLo!');-- hello!
  • lcase(string A) → varchar

    描述:同lower(string)。

  • ltrim(string) → varchar

    描述:去掉字符串开头的空格。

    select ltrim('   hello');-- hello
  • lpad(string, size, padstring) → varchar

    描述:右填充字符串以使用padstring调整字符大小。如果size小于字符串的长度,则结果将被截断为size个字符。大小不能为负,并且填充字符串必须为非空。

    select lpad('myk',5,'dog'); -- domyk
support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_2499106.html