2013-05-30 28 views
0

我正在將內容從另一個CMS遷移到Wordpress。我的挑戰是修復所涉及字段中包含的所有內部損壞的URL是'post_content'。我正在嘗試使用通配符進行搜索並替換爲MySQL

簡而言之,我需要搜索來自舊CMS的損壞URL中的整數,並將它們替換爲映射到正確的Wordpress內容ID的新值。

我有映射爲表中的「wp_postmeta」,其中整數新舊價值觀「POST_ID」是新的價值觀和‘meta_value’是舊值:

post_id | meta_key | meta_value 
13533 | content_id | 30 
13534 | content_id | 3094 
13535 | content_id | 4066 

這是SQL查詢我到目前爲止已經寫了,我覺得它是非常接近 - 但我需要使用通配符搜索'meta_value',否則它將無法正常工作。我不知道該怎麼做,並希望獲得一些提示。

UPDATE wp_posts 
INNER JOIN wp_postmeta ON wp_posts.ID = wp_postmeta.post_id 
SET post_content = REPLACE(post_content, wp_postmeta.meta_value , wp_postmeta.post_id) 
WHERE meta_key='content_id' 

在此先感謝 - 我是SQL的新手,它讓我花了一天的時間才弄到這麼遠!:-)

+0

嗨 - 「的content_id」是meta_key價值,這是一個關鍵/值對存儲在表中。我需要在'meta_value'中使用通配符語句,因爲數字30等整數在HTML href標記中。我知道如何將通配符應用於字符串或數字,但不適用於動態字段(右側?) – LuDao

+0

我知道,通配符不能用於SQL命令REPLACE,這很有意義。有沒有辦法解決這個問題或其他解決方案? – LuDao

回答

0

你能給我一個你的meta_key的樣品數據嗎?我希望這有助於

我假設你meta_keys開始像這樣的東西3094

UPDATE wp_posts 
INNER JOIN wp_postmeta ON wp_posts.ID = wp_postmeta.post_id 
SET post_content = REPLACE(post_content, wp_postmeta.meta_value , wp_postmeta.post_id) 
WHERE meta_key LIKE '30%' 

欲瞭解更多信息請參考以下鏈接WILDCARDS