数据库里有一些下面格式的图片:
<p><img alt="文字" title="文字" src="http://pic.baidu.com/image/32778.jpg"></p>
这图片地址里只有http://pic.baidu.com/
是不变的其它都是变的
也有一些的图片
<p><img alt="文字" title="文字" src="http://pic.google.com/image/32778.jpg"></p>
现在只想把全部的 带 http://pic.baidu.com
这个网址的图片替换掉,也就是清除了。
在 mysql5.7版本的 数据库里 ,怎么写正规则能完成这个 或者 有什么好的方法吗?
update bodytext set body=replace(body, "<p><img alt=".*" title=".*" src="http://pic.baidu.com.*"></p>", "");
上面是我写的。不成功。
请哪位熟悉 mysql 的朋友帮我看看怎么改? 或者有什么好的办法把 <p><img alt="文字" title="文字" src="http://pic.baidu.com/image/32778.jpg"></p>
这类图片全部替换成空
谢谢。
我的mysql 是5.7版本的
2020-09-15
之前没看明白需求,回答草率了。
更正下我理解的需求:遍历查找body中所有<img>标签,如果来自pic.baidu.com的,直接删除该<img>标签。
正则匹配表达式:
<img.*?pic\.baidu\.com.*?>
如果直接在java、php等后台语言中,很容易直接使用正则进行替换,但mysql 5.7的replace不能和正则一起用,因此放弃。
换种思路,如何去取出body中所有
img
标签且含有pic.baidu.com的字符串?主要思路:循环查找出所有<img>标签,判断是否为pic.baidu.com,最后再关联主表bodytest进行update。
下面用mysql的
substr
、locate
、replace
、substring_index
函数来截取和替换,函数的意思自行百度。最终UPDATE的SQL如下:
附表结构和测试数据:
2020-09-14
直接用like就可以了。。。
update bodytext set body='' where body like '%pic.baidu.com.%'