MySQL实现字符串的拼接,截取,替换,查找位置的操作
MySQL字符串的拼接、截取、替换、查找位置。
常用的字符串函数:
1、字符串的拼接
1.1CONCAT(s1,s2,...)函数
返回连接参数产生的字符串,一个或多个待拼接的内容,任意一个为NULL则返回值为NULL。
SELECTCONCAT('现在的时间:',NOW());--输出结果:现在的时间:2019-01-1711:27:58
1.2CONCAT_WS(x,s1,s2,...)函数
返回多个字符串拼接之后的字符串,每个字符串之间有一个x。
SELECTCONCAT_WS(';','pan_junbiao的博客','KevinPan','pan_junbiao');--输出结果:pan_junbiao的博客;KevinPan;pan_junbiao
2、字符串的截取
2.1SUBSTRING(s,n,len)、MID(s,n,len)函数
两个函数作用相同,从字符串s中返回一个第n个字符开始、长度为len的字符串。
SELECTSUBSTRING('您好,欢迎访问pan_junbiao的博客',8,14);--输出结果:pan_junbiao的博客 SELECTMID('您好,欢迎访问pan_junbiao的博客',8,14);--输出结果:pan_junbiao的博客
2.2LEFT(s,n)、RIGHT(s,n)函数
前者返回字符串s从最左边开始的n个字符,后者返回字符串s从最右边开始的n个字符。
SELECTLEFT('您好,欢迎访问pan_junbiao的博客',7);--输出结果:您好,欢迎访问 SELECTRIGHT('您好,欢迎访问pan_junbiao的博客',14);--输出结果:pan_junbiao的博客
3、字符串的替换
3.1INSERT(s1,x,len,s2)函数
返回字符串s1,其子字符串起始于位置x,被字符串s2取代len个字符。
SELECTINSERT('您好,欢迎访问阿标的博客',8,2,'pan_junbiao');--输出结果:您好,欢迎访问pan_junbiao的博客
3.2REPLACE(s,s1,s2)函数
返回一个字符串,用字符串s2替代字符串s中所有的字符串s1。
SELECTREPLACE('您好,欢迎访问阿标的博客','阿标','pan_junbiao');--输出结果:您好,欢迎访问pan_junbiao的博客
4、字符串的查询位置
4.1LOCATE(str1,str)、POSITION(str1INstr)、INSTR(str,str1)函数
三个函数作用相同,返回子字符串str1在字符串str中的开始位置(从第几个字符开始)。
SELECTLOCATE('pan_junbiao','您好,欢迎访问pan_junbiao的博客');--输出结果:8 SELECTPOSITION('pan_junbiao'IN'您好,欢迎访问pan_junbiao的博客');--输出结果:8 SELECTINSTR('您好,欢迎访问pan_junbiao的博客','pan_junbiao');--输出结果:8
4.2FIELD(s,s1,s2,...)函数
返回第一个与字符串s匹配的字符串的位置。
SELECTFIELD('pan_junbiao','pan_junbiao的博客','KevinPan','阿标','pan_junbiao');--输出结果:4
补充:mysql查找字符串位置instr()与LOCATE()字符串查找函数
INSTR(str,substr)
返回字符串str中子字符串的第一个出现位置。这和LOCATE()的双参数形式相同,除非参数的顺序被颠倒。
mysql>SELECTINSTR('foobarbar','bar'); ->4 mysql>SELECTINSTR('xbar','foobar'); ->0
LOCATE(substr,str),LOCATE(substr,str,pos)
第一个语法返回字符串str中子字符串substr的第一个出现位置。第二个语法返回字符串str中子字符串substr的第一个出现位置,起始位置在pos。如若substr不在str中,则返回值为0。
mysql>SELECTLOCATE('bar','foobarbar'); ->4 mysql>SELECTLOCATE('xbar','foobar'); ->0 mysql>SELECTLOCATE('bar','foobarbar',5); ->7
这个函数支持多字节字元,并且只有当至少有一个参数是二进制字符串时区分大小写。
POSITION(substrINstr)
返回子串substr在字符串str中第一次出现的位置。如果子串substr在str中不存在,返回值为0:
mysql>SELECTPOSITION('bar',‘foobarbar'); ->4 mysql>SELECTPOSITION('xbar',‘foobar'); ->0
效率测试
SELECT*FROM`o_soft`WHERELOCATE('d200',tid2)>0
MySQL返回的查询结果为空(即零行)。(查询花费0.0050秒)
SELECT*FROM`o_soft`WHEREINSTR('d200',tid2)>0
以上为个人经验,希望能给大家一个参考,也希望大家多多支持毛票票。如有错误或未考虑完全的地方,望不吝赐教。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。