字符串替换查询指南

k5hmc34c  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(301)

我正在尝试用wp\u posts>post\u内容表中的新短代码以编程方式替换不推荐的html。
目标是:
替换

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

具有

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

其中%是行中的任何字符
还有一个问题:我需要找到代码开始的字符串位置,这样我就可以将新字符串放在相同的开始位置,因为在这个字符串模式之前有内容。我还需要为每一行存储字符%,因为每一行都有一个基于它键入的单词的不同字符。
我假设需要获取匹配字符串的“<”的strpos()。
然后,我可以将标记之间的值存储在别名中。
然后,我需要删除匹配的字符串,并用新代码替换它,使用别名引用先前删除的字符。

pgpifvop

pgpifvop1#

从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\]')

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

j0pj023g

j0pj023g2#

你可以得到 % 价值观:

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]'
             )

相关问题