字符串替换查询指南

时间:2018-11-08 12:29:44

标签: mysql sql database

我正在尝试以编程方式用WP_Posts> post_content表中的新短代码替换已弃用的HTML。

目标:

替换

<span class="dropcap">%</span>

使用

[dropcap class='post-dropcap']%[/dropcap]

其中%是行中的任意字符

还有另一个问题:我需要找到代码开始的字符串位置,以便可以将新字符串放在相同的起始位置,因为此字符串模式之前有内容。我还需要为每行存储字符%,因为根据输入的单词,每行都有不同的字符。

我假设我需要获取匹配字符串'<'的strpos()。

然后,我可以将标签之间的值存储为别名。

然后,我需要删除匹配的字符串,并将其替换为新代码,并使用别名引用先前删除的字符。

2 个答案:

答案 0 :(得分:0)

您可以通过执行以下操作获得%值:

select substring_index(substring_index(col, '<', -1), '>', 1) as central_value

然后可以串联以获得所需的内容:

select concat('[dropcap class=''post-dropcap'']',
              substring_index(substring_index(col, '<', -1), '>', 1),
              '[/dropcap]'
             )

答案 1 :(得分:0)

从MySQL 8开始,您应该可以使用REGEXP_REPLACE来完成此任务。

在每一行HTML中,您都将寻找字符串'<span class="dropcap">(.)</span>',其中的点代表任何字符,并且括号内是用来记住此内容的。

您将替换为'\[dropcap class=''post-dropcap''\]\\1\[/dropcap\]',其中\\1代表我们刚刚记住的字符。

update html_lines
set line = regexp_replace(line, '<span class="dropcap">(.)</span>',
                                '\[dropcap class=''post-dropcap''\]\\1\[/dropcap\]')

这也适用于一行中多次出现该字符串。