文本型字段处理包括字符串切割,拼接,替换,信息提取等,熟练使用一些常用函数有利于提升工作效率。
- 计算字符长度
select char_lenth(column_name) from tableName; -- 一个汉字返回长度为1
select len(column_name) from tableName; -- 一个汉字返回长度为2字节
select length(column_name) from tableName; -- MySQL计算字符长度,等同于len
- 去除空值
-- 去除左边空格
select ltrim(' aaa');
-- 去除右边空格
select rtrim('aaa ');
-- 去除左右空格
select trim(column_name) from tableName;
- 大小写转换
-- 小写转换为大写
select upper('aaa');
select ucase('aaa');
-- 大写转换为小写
select lower('AAA');
select lcase('AAA');
select lower(column_name) from tableName;
- 截取字符串
-- 截取左边n个字符
select left('abcdefg',3);
select left(column_name,n) from tableName;
-- 截取右边n个字符
select right('abcdefg',3);
select right(column_name,n) from tableName;
-- 从任意位置截取字符
select mid(column_name,start,[length]) FROM tableName;
select substr(column_name,start,[length]) from tableName;
- 拼接字符串
-- 多个字符串直接拼接
select concat(year,'-',month,'-',day);
-- 字符串拼接指定分隔符
select concat_ws(‘-’,year,month,day);
-- 分组值拼接
select group_concat([distinct] column_name [order by 组内排序字段 asc/desc] [separatoe '分隔符']) from tableName group by 分组字段;
- 字符串查找
-- locate函数:Locate(str,sub) > 0,表示sub字符串包含str字符串;Locate(str,sub) = 0,表示sub字符串不包含str字符串
select locate('abc','abcdefg')
select locate('%abc',column_name) from tableName
-- instr(filed,str)函数:返回str子字符串在filed字符串的第一次出现位置
select instr('abcdefg','abc')
select instr(column_name,'abc') from tableName
- 字符串替换
select replace('abdfsfdr','r',''); -- 字符串r用替换为空
select replace(column_name,'子串','替换的子串') from tableName;
- 字符串填充
-- 左填充。lpad(str,n,pad) 左填充,用字符串pad对str的左边进行填充,达到n个字符串长度
update tableName set id=lpad(id,8,0);