字符串函数
本文介绍了PolarDB-X支持及不支持的字符串函数。
支持函数
PolarDB-X支持如下字符串函数:
| 函数名 | 描述 | 示例 | 
|---|---|---|
| ASCII(s) | 返回字符串s的第一个字符的ASCII码 | 返回CustomerName字段第一个字母的ASCII码: SELECT ASCII(CustomerName) AS NumCodeOfFirstChar FROM Customers; | 
| CHAR_LENGTH(s) | 返回字符串s的字符数 | 返回字符串RUNOOB的字符数: SELECT CHAR_LENGTH("RUNOOB") AS LengthOfString; | 
| CHARACTER_LENGTH(s) | 返回字符串s的字符数 | 返回字符串RUNOOB的字符数: SELECT CHARACTER_LENGTH("RUNOOB") AS LengthOfString; | 
| CONCAT(s1,s2...sn) | 字符串s1,s2等多个字符串合并为一个字符串 | 合并多个字符串: SELECT CONCAT("SQL ", "Runoob ", "Gooogle ", "Facebook") AS ConcatenatedString; | 
| CONCAT_WS(x, s1,s2...sn) | 同CONCAT(s1,s2,...)函数,但是每个字符串之间要加上x,x可以是分隔符 | 合并多个字符串,并添加分隔符: SELECT CONCAT_WS("-", "SQL", "Tutorial", "is", "fun!") AS ConcatenatedString; | 
| FIELD(s,s1,s2...) | 返回第一个字符串s在字符串列表(s1,s2...)中的位置 | 返回字符串c在列表值中的位置: SELECT FIELD("c", "a", "b", "c", "d", "e"); | 
| FIND_IN_SET(s1,s2) | 返回在字符串s2中与s1匹配的字符串的位置 | 返回字符串c在指定字符串中的位置: SELECT FIND_IN_SET("c", "a,b,c,d,e"); | 
| FORMAT(x,n) | 函数可以将数字x进行格式化"#,###.##", 将x保留到小数点后n位,最后一位四舍五入。 | 格式化数字"#,###.##"形式: SELECT FORMAT(250500.5634, 2); 返回: -- 250,500.56 | 
| INSERT(s1,x,len,s2) | 字符串s2替换s1的x位置开始长度为len的字符串 | 从字符串第一个位置开始的6个字符替换为 runoob: SELECT INSERT("google.com", 1, 6, "runoob"); 返回: -- runoob.com | 
| LOCATE(s1,s) | 从字符串s中获取s1的开始位置 |  获取b在字符串abc中的位置:SELECT LOCATE('st','myteststring'); 返回: -- 5    返回字符串abc中b的位置:SELECT LOCATE('b', 'abc'); 返回: -- 2 | 
| LCASE(s) | 将字符串s的所有字母变成小写字母 | 字符串RUNOOB转换为小写: SELECT LCASE('RUNOOB'); 返回: -- runoob | 
| LEFT(s,n) | 返回字符串s的前n个字符 | 返回字符串runoob中的前两个字符: SELECT LEFT('runoob',2); 返回: -- ru | 
| LOWER(s) | 将字符串s的所有字母变成小写字母 | 字符串RUNOOB转换为小写: SELECT LOWER('RUNOOB'); -- runoob | 
| LPAD(s1,len,s2) | 在字符串s1的开始处填充字符串s2,使字符串长度达到len | 将字符串xx填充到abc字符串的开始处: SELECT LPAD('abc',5,'xx') 返回: -- xxabc | 
| LTRIM(s) | 去掉字符串s开始处的空格 | 去掉字符串RUNOOB开始处的空格: SELECT LTRIM("RUNOOB") AS LeftTrimmedString; 返回: -- RUNOOB | 
| MID(s,n,len) | 从字符串s的n位置截取长度为len的子字符串,同SUBSTRING(s,n,len) | 从字符串RUNOOB中的第2个位置截取3个 字符: SELECT MID("RUNOOB", 2, 3) AS ExtractString; 返回: -- UNO | 
| POSITION(s1 IN s) | 从字符串s中获取s1的开始位置 | 返回字符串abc中b的位置: SELECT POSITION('b' in 'abc'); 返回: -- 2 | 
| REPEAT(s,n) | 将字符串s重复n次 | 将字符串runoob重复三次: SELECT REPEAT('runoob',3; 返回: -- runoobrunoobrunoob | 
| REPLACE(s,s1,s2) | 将字符串s2替代字符串s中的字符串s1 | 将字符串abc中的字符a替换为字符x: SELECT REPLACE('abc','a','x'); 返回: --xbc | 
| REVERSE(s) | 将字符串s的顺序反过来 | 将字符串abc的顺序反过来: SELECT REVERSE('abc'); 返回: -- cba | 
| RIGHT(s,n) | 返回字符串s的后n个字符 | 返回字符串runoob的后两个字符: SELECT RIGHT('runoob',2); 返回: -- ob | 
| RPAD(s1,len,s2) | 在字符串s1的结尾处添加字符串s2,使字符串的长度达到len | 将字符串xx填充到abc字符串的结尾处: SELECT RPAD('abc',5,'xx'); 返回: -- abcxx | 
| RTRIM(s) | 去掉字符串s结尾处的空格 | 去掉字符串RUNOOB的末尾空格: SELECT RTRIM("RUNOOB") AS RightTrimmedString; 返回: -- RUNOOB | 
| SPACE(n) | 返回n个空格 | 返回10个空格: SELECT SPACE(10); | 
| STRCMP(s1,s2) | 比较字符串s1和s2,如果s1与s2相等返回0 ,如果s1>s2返回1,如果s1<s2,返回-1 | 比较字符串: SELECT STRCMP("runoob", "runoob"); 返回: -- 0 | 
| SUBSTR(s, start, length) | 从字符串s的start位置截取长度为length的子字符串 | 从字符串RUNOOB中的第2个位置截取3个 字符: SELECT SUBSTR("RUNOOB", 2, 3) AS ExtractString; 返回: -- UNO | 
| SUBSTRING(s, start, length) | 从字符串s的start位置截取长度为length的子字符串 | 从字符串RUNOOB中的第2个位置截取3个 字符: SELECT SUBSTRING("RUNOOB", 2, 3) AS ExtractString; 返回: -- UNO | 
| SUBSTRING_INDEX(s, delimiter, number) | 返回从字符串s的第number个出现的分隔符delimiter之后的子串。 如果number是正数,返回第number个字符左边的字符串。 如果number是负数,返回第(number的绝对值(从右边数))个字符右边的字符串。 |  `SELECT SUBSTRING_INDEX('ab','',1);返回:-- a`    SUBSTRING_INDEX('a*b','*',-1); 返回: -- b    `SUBSTRING_INDEX(SUBSTRING_INDEX('abcde','',3),'*',-1);返回:-- c` | 
| TRIM(s) | 去掉字符串s开始和结尾处的空格 | 去掉字符串RUNOOB的首尾空格: SELECT TRIM('RUNOOB') AS TrimmedString; | 
| UCASE(s) | 将字符串转换为大写 | 将字符串runoob转换为大写: SELECT UCASE("runoob"); 返回: -- RUNOOB | 
| UPPER(s) | 将字符串转换为大写 | 将字符串runoob转换为大写: SELECT UPPER("runoob"); 返回: -- RUNOOB | 
不支持函数
与MySQL5.7相比,PolarDB-X暂不支持如下字符串函数:
| 函数名 | 描述 | 
|---|---|
| LOAD_FILE() | 加载文件 | 
| MATCH | 全文检索 | 
| SOUNDS LIKE | 同音字符串比较 |