MySQL如果在YYY和ZZZ之间找到并替换XXX

时间:2015-10-10 10:04:57

标签: mysql regex replace

我正在处理基于WordPress的项目,我需要批量编辑数据库中的帖子。

目前我有单元格,内容为Text <pre> Text\r\nText\r\nText </pre>

我需要做的是找到所有\r\n字符串并将其替换为\r\n\r\n。到目前为止,我有这个:

UPDATE `table_name`
SET `field_name` = replace(field_name, '\r\n', '\r\n\r\n\')

问题是,\r\n\标记之外还有<pre>个文字,我不想影响这些文字。这就是为什么我需要在调用替换之前执行find (start: '<pre>' end: '</pre>')之类的操作。我根本不知道如何在MySQL中这样做。

在网络搜索时,我发现了一些关于正则表达式的东西,但我不知道它是如何工作的。

1 个答案:

答案 0 :(得分:0)

MySQL没有正则表达式替换功能。我说你有两个选择 - 要么创建一个用户定义的功能来进行这种替换,要么,如果你不能/不知道怎么做,你必须使用脚本/用不同语言编写的程序。它可以是例如一个PHP脚本,它将连接到数据库并执行所需的替换。另一种方法是将包含帖子的表转储到文件,使用sed或类似的东西,然后再次导入数据。

使用sed可能比PHP花费更少的时间,并且语法相当容易学习。

无论你选择什么,记住以前做个备份总是一个好主意。