首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL的字符串替换更新操作

大家好,我是anyux。本文介绍MySQL的字符串替换更新操作。

在贴吧里看到吧友提出问题,还提供红包,看到这些摩拳擦掌,需要解决,就决定在数据库操作一通。

吧友提出的需求如下:

要批量删除数据库表wp_posts的字段post_content中内容为srcset=“XXX”应该怎么搞!srcset=“XXX”都删除,不是只删除这个属性中的内容。

以下是我的解决方案

数据库A中有表B,字段包括id,name,content。数据行数有5条示例创建库、表,并插入数据

createdatabaseAcharsetutf8;

useA;

createtableB(idint, namechar(20),contentvarchar(255));

insertintoBvalues(1,"zs","有朋自远方来,a='b',不亦乐乎"),(2,"ls","人不知而不愠,a='b',不亦君子乎 "),(3,"ww","敬鬼神,a='b',而远之 "),(4,"zl","朝辞白帝彩云间,a='b',千里江陵一日还"),(4,"qb","两岸猿声啼不住,a='b',轻舟已过万重山");

解决思路是

替换a='b'为空,代表删除a='b'

替换语句如下

updateBsetcontent =replace(content,"a='b'",'');

查看表内容

下图中的a='b'已被删除。就在我以为问题解决了时,又看到吧友的回复

吧友回复如下

嗯,顿时感觉自己太年轻了[苦笑]

怎么办,不能楞着,按吧友的规则,创建一些随机字符

第一步:建库、表、插入语句

createdatabaseAcharsetutf8;

useA;

createtableB(idint, namechar(20),contentvarchar(255));

insertintoBvalues(1,"zs","有朋自远方来,a='随机字符&.0fFDc',不亦乐乎"),(2,"ls","人不知而不愠,a='符随机字FEHfd,.*',不亦君子乎 "),(3,"ww","敬鬼神,a='F符随机字EHfd,.*',而远之 "),(4,"zl","朝辞白帝彩云间,a='P)Pfead*#%',千里江陵一日还"),(5,"qb","两岸猿声啼不住,a=' Unix-like、+{{#R',轻舟已过万重山");

第二步:获取数据

获取前半段数据

selectsubstr(content,1,locate('a',content)-1)fromB;

#获取后半段数据

selectsubstr(content,locate('\'',content,locate('\'',content)+1)+1)fromB;

第三步:拼接数据方法1

使用了字符串截取与拼接函数,对每行记录形成一条sql语句,并导出到文件中

selectconcat("update `A`.`B` set content = '",substr(content,1,locate('a',content)-1),substr(content,locate('\'',content,locate('\'',content)+1)+1),"' where id=",id,";")asupdate_sqlfromBintooutfile'/tmp/update.sql';

替换数据

查看sql文件

cat /tmp/update.sql

导入数据,数据已恢复

方法2

使用替换函数replace,拼接函数concat,截取函数substr,自动截取数据,并针对每行记录进行更新操作

这种方法只需要一条语句,就实现整个数据表的更新。推荐这种方式

updateB

setcontent=

replace(content,content,

concat(

substr(content,1,locate('a',content)-1),

substr(content,locate('\'',content,locate('\'',content)+1)+1)

)

);

提示:这里给的方法,只适用于普通的字符,对于表达式中存在多个单引号或双引号,还需要你自己根据业务情况作出判断

欢迎在评论区一起讨论,质疑。文章都是手打原创,每天最浅显的介绍运维、数据库相关的技术,喜欢我的文章就关注一波吧,可以看到最新更新和之前的文章。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200311A05DQ500?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券