嗨有没有办法在mysql表中用其他东西“替换”10次或更多次_(下划线)的出现。
背景 我继承了为网络编写的内容数据库。
不幸的是,原始作者使用________________
代替<hr />
作为横向规则。
这是一个wordpress安装,因此内容位于名为wp_posts
的表中。
我能够找到以下查询所涉及的帖子。
SELECT *
FROM `wp_posts`
WHERE `post_content` LIKE '%\_\_\_\_\_\_\_\_\_\_%'
更新:
我也可以使用以下内容找到匹配的帖子
SELECT `post_content`
REGEXP '_{10,}'
FROM `wp_posts`
WHERE `post_content` LIKE '%\_\_\_\_\_\_\_\_\_\_%'
LIMIT 0 , 30
然而,如果没有匹配则只返回1,如果不匹配则返回0.
有什么办法可以返回匹配的子字符串吗? 有没有办法让表达贪婪?
答案 0 :(得分:4)
MySQL没有正则表达式替换,但如果没有它,你可以做你想做的事。
您可以使用REPLACE
替换完整的字符串:
update `wp_posts` set `post_content` = replace(`post_content`,'__________','<hr />');
由于这是一次性工作,我首先找到用于表示_
的{{1}}的最高计数 - 如果是15,我首先运行该SQL命令,字符串为15 <hr />
s,然后是14,然后是13,然后是...,然后是10。