以下是用过的一些MySql字符串函数整理的方法,罗列出来仅供参考。
1、非法数据替换
函数:replace(str,from_str,to_str)
查询后发现数据库中存在一些非法数据,导致看起来非常难看,数据入库时只检查了前后空格,没有做更严格的去空格处理,只能进行事后处理。
update table set cname = replace(cname,' ',''); update table set cname = replace(cname,' ','');
有些字段看似空格,实际上不是空格的东西。可能是一些全角符合或者其他的,复制该字段然后粘贴至需替换中即可。
2、查询结果字段连接
函数1:concat(str1,str2,str3)
函数2:concat_ws(splitstr,str1,str2,str3)
函数3:group_concat(str)
函数1 concat(str1,str2,str3)
很简单,只是将制定列或字符串拼接起来然后使用。
函数2 concat_ws(splitstr,str1,str2,str3)
将str1,str2,str3以splitstr为分隔符进行连接并返回结果。
函数3 group_concat(str)
手册上说明:该函数返回带有来自一个组的连接的非NULL值的字符串结果。
比较抽象,难以理解。
group_concat()会计算哪些行属于同一组,将属于同一组的列显示出来。要返回哪些列,由函数参数(就是字段名)决定。分组必须有个标准,就是根据group by指定的列进行分组。
1、测试语句,
select province,group_concat(name) from city group by province;
河北 保定,石家庄,邯郸,邢台
北京 北京
select group_concat(name) from city;
保定,石家庄,邯郸,邢台,北京
函数4 subString_index(str,indexstr,index)
以字符标识截取字符串的函数,第二个参数为指定字符,第三个参数为该字符出现的次数
select sum(substring_index("0.124M",'M',1)) from dual;
返回结果为:0.124