字符串函数分为四类。
基础,查询(位置,子字符串,长度),新增,修改。
格式,填充,trim,大小写。
转换,进制类,字符集类,其他数据类型。
工具,生成,加密 & 解密,转义,其他。
1、基础
1.1 查询
1.1.1 位置
分为两类,在单个字符串中寻找某个字符串的位置。在字符串集合中搜索某个字符串的位置。
1.1.1.1 position(单个)
格式: position(search_str in str)
说明:搜索search_str在str中的位置。不存在时返回0,若search_str或str为null时返回null。
参数:
search_str:关键词。
str: 被搜索的字符串
示例:
position('a' in 'abc') // 返回1
注意:起始位置为1,不是0. 当多次出现时,只返回第一次出现的位置
类似的函数:instr(str, search_str)
1.1.1.2 locate(单个)
比position多一个参数,该参数指定搜索的起始位置。
locate(‘a’, ‘abca’, 1); // 返回1,和position完全相同
locate(‘a’, ‘abca’, 2); // 返回4。
1.1.1.3 field & find_in_set(多个)
格式:field(target, str1, str2,strN) find_in_set(target,strList)
说明:在str集合中查询target的位置。
参数:
str1, str2, strN:提供N个字符串,组成一个集合
strList:由1到N个字符串拼接而成,用逗号分隔。
示例:
field(‘a’,’a’,’b’,’c’) // 返回1
find_in_set(‘a’,’a,b,c’) // 与上面功能相同
1.1.2 长度
1.1.2.1 length
length(‘ab’); // 返回2,计算字符串的长度。
1.1.3 子串
1.1.3.1 substring & substr & mid
格式:substring(str, start, length)
描述:截取子字符串。
参数:
start:起始位置,负数时,从右往左。
length:截取的长度,若未指定,默认到末尾。
示例:
substring(‘abc’,1); // 返回bc
substring(‘abc’,-1); // 返回c
类似的函数:mid(str, start, len)
1.1.3.2 left & right
left(str, length) // 返回str的前length个字符,当length为负数时,从末尾开始。
right(str,length) // 从右到左。
1.2 新增
1.2.1 concat & concat_ws
格式:concat(str1, str2...) 或 concat_ws(separator, str1, str2...)
描述:在上一个字符串的末尾添加下一个字符串。
参数:
Str: 1到N个子字符串。
separator: 分隔符,若未指定,默认为逗号
示例:
select concat(‘hello’, ‘ ’, ‘world’) // 返回hello world
select ‘hello’ || ‘ ’ || world // 相同的效果
1.3 修改
1.3.1 insert
格式:insert(str, start, length, substr)
说明:在str的开始位置,结束位置之间,使用substr替换。
1.3.2 replace
格式:replace(str, old_str, new_str)
描述:替换字符串。
参数:
old_str:被替换的字符串。若不存在,则什么都不做。
new_str: 用来替换的新字符串
示例:
select replace('aba', 'a', 'd'); // 返回dbd
注意:不是光替换第一次,而是替换所有的字符串
2、格式
2.1 去除
2.1.1 trim & ltrim & rtrim
格式:trim( [ [{LEADING | TRAILING | BOTH}] [removal_char] FROM ] target_string)
描述:在开头,末尾删除字符串中的所有特定字符。当未指定特定字符时,默认为空格。
参数:
{LEADING | TRAILING | BOTH}:指定删除位置,LEADING开头,TRAILING末尾,BOTH包含开头和末尾。默认值为both
removal_char: 特定字符,默认情况下为空格。
from target_string: 指定字符串。
示例:
trim(‘xxxWHISKEYxxx’); // 返回源字符串,位置参数为both,特定字符为空字符串。
trim(' WHISKEY '); // 返回WHISKEY,位置参数为BOTH,特定字符串为空字符串。
trim(LEADING from ' WHISKEY '); // 等价于ltrim
trim(TRAILING from ' WHISKEY '); // 等价于rtrim。
trim(BOTH 'x' FROM 'xxxWHISKEYxxx'); // 返回WHISKEY,位置参数BOTH有没有都是一样的。
类似的函数:
ltrim(str);// 相当于位置参数为LEADING, 特殊字符为空格
rtrim(str);// 相当于位置参数为TRAILING, 特殊字符为空格
2.2 填充
2.2.1 lpad
格式:lpad(str, len, padStr)
描述:在str的开头用padStr填充,直到str字符串的长度为len。
参数:
len:填充完成之后的字符串长度,若小于原始长度,相当于截取。
padStr:填充的字符串
示例:
select lpad('ab', 5, 'b'); // 返回bbbab
select lpad('ab', 1, 'b'); // 返回a
类似的函数:
select rpad('ab', 5, 'b'); // 返回abbbb
2.3 大小写
2.3.1 lower & upper
返回字符串的大小写,不改变源字符串。
select lower(‘AbC’); // 返回abc
select upper(‘aBc’); // 返回ABC
3、转换
3.1 字符集
3.1.1 ascii & char
ascii(‘A’); // 返回65, 字母的ASCII码
char(num); // 字符集数字对应的字符,参数为65时返回A
3.2 进制
bin(str) // 将字符串转换为二进制
oct(str) // 将字符串转换为八进制
hex(str) // 将字符串转换为十六进制
unhex(str) // 将十六进制转换为对应的字符串。
4、工具
4.1 生成
4.1.1 repeat
select repeat(‘a’,3); // 返回aaa,str重复n次。
4.1.2 reverse
select reverse(‘ab’); //返回ba,原字符串倒序。
4.1.3 space
select space(n); // 返回n个空格
4.1.4 UUID
select UUID(); // 返回唯一ID
4.2 加密
4.2.1 to_base64
select to_base64(str); // 返回用base64加密的字符串。
4.3 转义
4.3.1 quote
quote("a'b'c") // 返回'a\'b\'c', 将str中的特殊字符进行转义。
4.4 其他
4.4.1 strcmp
格式: strcmp(str1, str2)
说明:str1和str2做比较,大于返回1,小于返回-1,等于返回0
示例:
select strcmp(‘a’,’b’); // 返回-1