mysql替换字符串技巧

今天整理一下数据库的表,发现有好些地方需要替换,格式是固定的但是字符是变化的。

如:

红框中  漏洞类型:XXX弱点描述,是需要删除的。中间的字符是变化的,此时可以使用locate、substring和replace三个方法结合就可以成功清除掉冗余的字符。

1、截取字符串 
substring(str, pos) 
substring(str, pos, length) 
说明:substring(被截取字段,从第几位开始截取) 
substring(被截取字段,从第几位开始截取,截取长度)

2、返回字符串位置
LOCATE(substr,str,pos) 
返回子串 substr 在字符串 str 中的第 pos 位置后第一次出现的位置。如果 substr 不在 str 中返回 0 
如 SELECT LOCATE('bar', ‘foobarbar',5)   返回7 

3、字符串替换
REPLACE(str,from_str,to_str) 
在字符串 str 中所有出现的字符串 from_str 均被 to_str替换,然后返回这个字符串 

所以清除上图字符串的sql语句可以这样写:

update VuldbDetail set descr=replace(descr,substring(descr,1,(locate('弱点描述',descr)+5)),'')  where `productid`=0

locate加5是因为locate('弱点描述',descr) 返回的是“弱”字的位置,+5可以覆盖到我需要替换的字符。

同理,

我要把“一般性的建议:”去掉sql语句和上面相似

update VuldbDetail set advice=replace(advice,substring(advice,1,(locate('一般性的建议',advice)+7)),'') where `productid`=0

接下来需要去掉标签,只保留连接

思路是先把<a***_blank">去掉,然后再去掉</a>,sql语句可以这样写

update VuldbDetail set descr=replace(replace(descr,substring(descr,locate('<a href',descr),locate('blank">',descr)-locate('<a href',descr)+7),''),'</a>','')  where `productid`=0 and descr like '%</a>%'

注意:update时尽量多检查一下,刚刚写错,重新回滚还原数据好麻烦。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值