【问题标题】:Find and Replace Strings in a Column with Data from Another Table?用另一个表中的数据查找和替换列中的字符串?
【发布时间】:2011-12-23 07:38:04
【问题描述】:

我有:

表_A:

ID | post_content

1 |这是bla bla url1.com

2 |这是另一个文本 blah blah url2.com

3 |这是第三个文本 blah blah url3.com

4 | wordpress博文这样的文章文本很多,里面匹配的字符串比较多

5 | ...

*Table_B:*

字符串A |字符串B

url1.com |链接1.com

url2.com |链接2.com

url3.com |链接3.com

...url600 | ...链接600

表 A 中的 post_content 是 wordpress 文章文本,可能在此文本中的某处包含一些与 StringsA 中的字符串匹配的字符串。

我需要用 StringsB 中的相应字符串替换 post_content 列中的那些字符串,所以它看起来像这样:

表_A:

ID | post_content

1 |这是bla bla link1.com

2 |这是另一个文本 blah blah link2.com

3 |这是第三个文本 blah blah link3.com

4 | wordpress博文这样的文章文本很多,里面匹配的字符串比较多

5 | ...

最简单的方法是什么?我可以只使用 MySQL,还是应该使用 PHP 脚本?

【问题讨论】:

    标签: php mysql string replace find


    【解决方案1】:

    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)
    

    【讨论】:

    • 感谢您的快速回复 phatfingers,但我尝试使用您提到的替换功能,只有 StringsB 列第一行的字符串被替换,而 post_content 文本中只有 4 个。其他一切都完好无损。 StringsA 和 StringsB 列有大约 700 个值,如何查找和替换每一个?
    • 嗯。看起来 replace() 函数正在完成它的工作,但 update 认为它在第一次命中后对每一行都完成了,即使一个表中的每一行都连接到另一个表中的每一行。
    • 我认为您可能不得不采用那种 PHP 方法。如果您遍历 TableB 字符串列表,您可以使用 StringsA、StringsB、StringsA 作为参数迭代地调用“UPDATE Table_A SET post_content=replace(post_content, ?, ?) WHERE post_content LIKE '%?%'”。
    猜你喜欢
    • 1970-01-01
    • 2013-03-25
    • 1970-01-01
    • 2011-03-09
    • 2019-01-12
    • 2015-06-27
    • 2023-01-25
    • 1970-01-01
    • 2021-07-20
    相关资源
    最近更新 更多