2013-02-24 61 views
0

我所有的帖子標題都有一個靜態詞。我在帖子標題中發佈了超過9000個發佈帖子,其中包含兩個不同的靜態詞彙我試圖從我所有的帖子中刪除這個詞。如何通過mySQL批量更新帖子標題wordpress

從本質上講,我正在尋找一種方式來刪除常量字。我嘗試通過wordpress使用導出並以這種方式編輯帖子標題,但文件爲100MB +,並且根本無法打開。

我看向SQL/phpMyAdmin的,但我不是非常好,SQL查詢精通,不想搞砸了我的數據庫。

「恆定」始終是標題的第一個字。我能做些什麼 而不是讓mysql檢測到第一個空間並刪除之前的所有內容以及包含空間。從本質上講,刪除第一個詞 。基本上我有一個以上的常量,所以如果我只能找到字符串中的第一個空格,然後將其刪除並且之前的所有內容都更好,那麼它應該更好一些。我假設我們會使用sub_string 什麼的。

這是職稱結構

恆等這裏的東西

所以如果它發現「恆」的搜索查詢和空間,並以「」沒有什麼替代它這樣我就可以完全刪除它。如果它可能是一個搜索和替換查詢,那就太好了,所以我可以在以後使用它。

在數據庫/表/列信息

的表稱爲:wp_posts,並且需要時,它的價值是post被限制到表post_type的價值和標題在post_title

任何幫助將不勝感激。

回答

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開始,而不是零。

就個人而言,我總是喜歡跑相當於首先選擇,只是爲了某些(太多年的MyISAM無BEGIN WORK):

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

我假設我將與WordPress的等效替代「上崗」和「稱號」? – Maaz 2013-02-24 01:33:25

+1

我怎麼會去把它限制在那裏post_type等於 「後」 SELECT POST_TITLE, MID(POST_TITLE,長度( '恆')+1)AS replacedTitle FROM wp_posts WHERE POST_TITLE LIKE '恆%';' – Maaz 2013-02-24 01:37:59

+1

我用數據庫信息更新了我的問題。 – Maaz 2013-02-24 01:48:06

0

Search RegEx是一個很好的插件,可以通過所有的帖子和頁面內容,發佈標題,發佈元等搜索和替換 - 使用grep或純文本。不搜索自定義帖子類型。

備份做任何改變,無論是與這個插件或直接查詢數據庫之前,你的數據庫。

文檔:http://urbangiraffe.com/plugins/search-regex/

+0

這可能是一個很好的解決方案,但安裝插件,並尋找在「文章標題」簡單的一句話後場沒有結果。測試過的其他一些詞也沒有任何成功。 :( – Maaz 2013-02-24 09:00:24

+0

看看你的標記和搜索單詞與phpMyAdmin在數據庫中找出字(S)真的是;在標題或內容。 – markratledge 2013-02-24 15:21:43