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时尽量多检查一下,刚刚写错,重新回滚还原数据好麻烦。

MySQL提供了replace()函数来替换字符串。你可以使用以下语法进行替换操作: UPDATE `table_name` SET `field_name` = REPLACE(`field_name`, 'from_str', 'to_str') WHERE `field_name` LIKE '%from_str%' 这个语句将会在指定的表中,将字段中包含'from_str'的字符串替换成'to_str'。请注意,这个操作是针对满足指定条件的记录进行的。 [2] 另外,你也可以使用SELECT语句结合replace()函数来替换字符串。以下是一个示例: SELECT bkName as '替换前', REPLACE(bkName, 'en', 'aa') AS '替换后' FROM books 这个语句会将查询结果中的bkName字段中的所有'en'替换为'aa'。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [mysql 替换字符串的实现方法](https://blog.csdn.net/chen7360/article/details/119931958)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [mysql替换字符串技巧](https://blog.csdn.net/qq1124794084/article/details/81775651)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [mysql 替换字符串](https://blog.csdn.net/xx_star1204/article/details/72934686)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值