在MySQL中用正则表达式替换数据库中的内容的方法

以下方法有局限性,所以当一个思路和兴趣了解一下就够了,正确的处理办法是把数据取出来处理完成后再更新,mysql语句并不能使用正则进行替换

UPDATE test set test.data=REPLACE (test.data,SUBSTR(test.data,LOCATE("{",test.data),LOCATE("}",test.data)),"") where 1=1

可以实现将{}之中的值替换为空
例子:data字段里面的数据为

[{"key1":"value1"},{"key2":"value2"}]

那么执行该语句之后data被修改为:

[{"key2":"value2"}]

搜索图片正则表达式:<img.*src=[^>]*>

函数解释:

LOCATE(substr,str) //返回在substr字符串中str第一次出现的位置
SUBSTR(str,pos,len) //返回str字符串中的从第pos位置开始的len个长度字符串。
REPLACE(str1, str2, str3) //将所有str1字符串中出现的str2替换为str3

将comment表中的author_url包含www.sohu.com的记录,其中的sohu替换为sina,一个语句搞定~ 
update comment set author_url=REPLACE(author_url,'sohu','sina') where author_url REGEXP 'www.sohu.com'; 

带IF判断的复杂替换 

update comment set url=IF(url REGEXP 'test.yahoo.com.cn',REPLACE(url,'www1.sohu.com','www.sina.com'),REPLACE(url,'www2.yahoo.com','www.sina.com')) where 1=1; 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值