我所有的帖子标题都有一个静态的单词。我的帖子标题中有超过9000个已发布的帖子,其中包含两个不同的静态单词。我试图从我的所有帖子中删除这个词。
基本上,我正在寻找一种方法来删除那个常数字。我尝试通过wordpress导出导出并编辑帖子标题,但文件是100mb +并且根本无法打开。
我看了SQL / phpmyadmin,但我不太熟悉SQL查询,也不想弄乱我的数据库。
“常数”始终是标题的第一个单词。我能做什么 而是让mysql检测第一个空格并删除所有内容 在它之前以及包括空间。基本上,删除 第一个字。基本上我有不止一个常数,所以它会 如果我能找到字符串中的第一个空格然后更好 删除它和之前的一切。我假设我们使用sub_string 什么的。
这是标题结构
这里不断的其他东西
所以,如果有一个搜索查询,它找到“常量”和一个空格并用“”替换它,那么我就可以完全删除它。它可能是一个搜索和替换查询,所以我可以在以后使用它。
有关数据库/表/列的信息
该表名为:wp_posts
,当值为post_type
且标题位于post
时,需要将其限制为表post_title
的值柱
非常感谢任何帮助。
答案 0 :(得分:1)
MySQL没有您正在寻找的内容 - 是的,有一个REPLACE()
字符串函数,但您无法将其限制为单个替换。因此,您可能会无意中替换可能出现在标题字符串中的此常量的其他出现。
恕我直言,最简单的方法是找到以常量开头的所有标题,然后替换第一个(即在字符串的开头):
UPDATE wp_posts
SET post_title =
MID( post_title, LENGTH('Constant ')+1 )
WHERE post_title LIKE 'Constant %'
AND post_type = 'post';
您需要+1
因为MySQL字符串偏移从1开始,而不是从零开始。
就个人而言,我总是喜欢先运行等效的SELECT,只是为了确定(没有BEGIN WORK
的MyISAM太多年了):
SELECT post_title,
MID( post_title, LENGTH('Constant ')+1 ) AS replacedTitle
FROM wp_posts
WHERE post_title LIKE 'Constant %'
AND post_type = 'post';
或者,如果你某些你总是要删除第一个单词(即直到并包括第一个空格),那么以下语句应该有效:
UPDATE wp_posts
SET post_title =
MID( post_title, POSITION( ' ' IN post_title )+1 )
WHERE post_type = 'post';
如果没有找到空格,POSITION()
将返回零,因此在一般情况下,此语句将是无操作(即非破坏性)。
答案 1 :(得分:0)
Search RegEx是一个很棒的插件,可以搜索和替换 - 使用grep或纯文本 - 通过所有帖子和页面内容,帖子标题,发布元等。不搜索自定义帖子类型。
在使用此插件或数据库中的直接查询进行任何更改之前备份数据库。