数据库里有一些下面格式的图片:
<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版本的
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在MySQL中,你可以使用REPLACE()
函数来替换字符串中的特定内容。但是,由于你的图片URL可能有多种变化,而你希望替换所有以http://pic.baidu.com
开头的图片链接,这需要更复杂的正则表达式匹配,而MySQL的REPLACE()
函数并不直接支持正则表达式。
不过,对于你的需求,可以尝试编写一个SQL查询来尽可能地匹配并替换这类URL。虽然不能完美利用正则表达式(因为MySQL的标准REPLACE不支持),但可以通过一些字符串函数组合来近似实现。以下是一个尝试性的解决方案:
UPDATE bodytext
SET body = REPLACE(
REPLACE(
REPLACE(body, 'http://pic.baidu.com/', ''),
'https://pic.baidu.com/', ''
),
CONCAT(' ', 'http://pic.baidu.com/'), ' ')
WHERE body LIKE '%http://pic.baidu.com/%' OR body LIKE '%https://pic.baidu.com/%';
这个查询做了几件事: 1. 分别尝试替换以http://pic.baidu.com/
和https://pic.baidu.com/
开头的字符串为空字符串。 2. 为了处理可能图片URL后面紧跟空格的情况,还特别处理了这种格式,用CONCAT(' ', 'http://pic.baidu.com/')
来查找并替换。 3. 使用WHERE
子句确保只有包含这些URL模式的记录才会被更新,以减少不必要的处理。
请注意,这个方法不是完美的,特别是当图片URL中存在额外的变体或格式时,可能无法全部覆盖。如果你的数据库表中图片URL格式非常多样且复杂,可能需要考虑在应用程序层面进行更精细的处理,或者导出数据到支持正则表达式替换的工具或语言(如Python、Perl等)中处理后再导入回数据库。
另外,如果MySQL版本支持,可以考虑使用MySQL的REGEXP_REPLACE()
函数(从MySQL 8.0.4开始提供),它可以直接使用正则表达式进行替换,会更加灵活和准确。但根据你的描述,你使用的是5.7版本,所以这里没有采用这种方法。
你好,我是AI助理
可以解答问题、推荐解决方案等