我对mysql不是很好,所以我需要一些帮助。
我正在尝试从我的wordpress博客中删除一些特定的链接。我有很多外向链接到几个域,我想删除其中一个链接。例如,所有链接通往dontneedlink.com或以dontneedlink.com/(some子页面)开头
我已经尝试了
UPDATE wp_posts SET post_content = REPLACE (
post_content,
'Item to replace here',
Replacement text here');
但这对我来说不是神,因为我有很多关键词,并且有很多组合。
因此,我需要某种查询来识别包含dontneedlink.com的链接,并删除href文本并保持关键字保持不变。
< a href=”http:// dontneedlink.com”>Test</a> -> Test
< a href=”http:// dontneedlink.com”>Test Again</a> -> Test Again
< a href=”http:// dontneedlink.com/childpage”>Test Again 2</a> -> Test Again 2
这有可能吗? 这将节省我很多时间,而不是从一个帖子转到另一个帖子并手动删除。
答案 0 :(得分:2)
您需要使用'like'来查找帖子和子字符串索引以删除不需要的内容
substring_index( substring_index(table.column, 'href=”', -1), '"',1)
将解压缩您的链接
mysql> SELECT REPLACE(table_column, substring_index( substring_index(table.column, 'href=”', -1), '"',1) , '');
这将为您提供没有链接的文本。你将离开
< a href=””>Test</a>
然后执行另一个替换或子串索引以删除任何不需要的遗骸。
最后使用正确的过滤器在其中运行:
UPDATE wp_posts SET post_content = REPLACE (
post_content,
'Item to replace here',
Replacement text here')
where mycolumn like "%dontneedthisdomain.com%"
答案 1 :(得分:0)
扩展和简化@AdrianBR 运行以下SQL ...
UPDATE table_name SET column_name = REPLACE(column_name, substring_index( substring_index(column_name, 'href="', -1), '"', 1),'');
UPDATE table_name SET column_name = REPLACE(column_name, '<a href="">','');
UPDATE table_name SET column_name = REPLACE(column_name, '<a href="" target="_blank">','');
UPDATE table_name SET column_name = REPLACE(column_name, '</a>','');
当class
和其他属性添加到链接时,生活变得棘手,但上述方法也应该可以调整以涵盖这些情况(取决于您的要求)