2011-11-07 50 views
0

我:使用另一個表中的數據查找並替換列中的字符串?

表-A:

ID | post_content

1 |這是bla bla url1.com

2 |這是另一個文本等等等等url2.com

3 |這是第三個文本等等啦url3.com

4 |有很多這樣的WordPress博客帖子的文章文本中有更多匹配的字符串

5 | ...

*表-B:*

StringsA | StringsB

url1.com | link1.com

url2.com | link2.com

url3.com | link3.com

... url600 | ... link600

表A中的post_content是wordpress文章文本,其中可能包含本文中與StringsA中某些字符串匹配的幾個字符串。

我需要從StringsB相應的字符串替換POST_CONTENT列這些字符串所以它看起來像這樣:

表-A:

ID | post_content

1 |這是bla bla link1.com

2 |這是另一個文本等等等等link2.com

3 |這是第三個文本等等等等link3.com

4 |有很多這樣的WordPress博客帖子的文章文本中有更多匹配的字符串

5 | ...

什麼是最簡單的方法呢?我可以只使用MySQL,還是應該使用PHP腳本?

回答

0

http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_replace

您可以查詢做...小心,當然。

update Table_A, Table_B set post_content=replace(post_content, StringsA, StringsB) 
+0

謝謝您的回覆快phatfingers,但我試着用替換功能就像你提到的,只有從列StringsB得到更換其中只有4在POST_CONTENT文本的第一行中的字符串。其他一切完好無損。 StringsA和StringsB列有大約700個值,如何找到並替換它們中的每一個? – SpiritFly

+0

呃。它看起來像replace()函數正在做它的工作,但更新認爲它是在第一次打擊後的每一行完成的,即使一個表中的每一行都連接到另一個表中的每一行。 – phatfingers

+0

我想你可能不得不採取PHP方法。如果循環訪問TableB字符串列表,則可以用StringsA,StringsB,StringsA作爲參數迭代地調用「UPDATE Table_A SET post_content = replace(post_content,?,?)WHERE post_content LIKE'%?%'」。 – phatfingers

相關問題