What is the correct syntax for a Regex find-and-replace using REGEXP_REPLACE in MariaDB?(在 MariaDB 中使用 REGEXP_REPLACE 进行正则表达式查找和替换的正确语法是什么?)
问题描述
我需要对名为 post
的 MySQL 表中名为 message
的列运行正则表达式查找和替换.
I need to run a regex find-and-replace against a column named message
in a MySQL table named post
.
我的数据库正在运行 MariaDB 10.
My database is running MariaDB 10.
根据 docs,MariaDB 10 有一个新的 REGEXP_REPLACE
函数,旨在完全做到这一点,但我似乎无法弄清楚实际的语法.
According to the docs, MariaDB 10 has a new REGEXP_REPLACE
function designed to do exactly this, but I can't seem to figure out the actual syntax.
它将影响 280,000 行,因此理想情况下还有一种方法可以将其限制为在我测试时一次仅更改一个特定行,或者只是执行 SELECT
而不是 UPDATE
直到我确定它符合我的要求.
It will affect 280,000 rows, so ideally there's also a way to limit it to only changing one specific row at a time while I'm testing it, or simply doing a SELECT
rather than an UPDATE
until I'm sure it does what I want.
我要运行的正则表达式:[quotesauthor=(.+)slink=[^]]+]
The regex I want to run:
[quotesauthor=(.+)slink=[^]]+]
替换字符串:[quote="$1"]
以下是我尝试过的,但它只是抛出了一个 SQL 错误:
The following was what I tried, but it just throws a SQL error:
UPDATE post SET message = REGEXP_REPLACE(message, '[quotesauthor=(.+)slink=[^]]+]', '[quote="$1"]') WHERE post_id= 12
在这种情况下,原始消息是:[quote author=Jon_doe link=board=2;threadid=125;start=40#msg1206 date=1065088]
最终结果应该是 [quote="Jon_doe"]
In this case, the original message was:
[quote author=Jon_doe link=board=2;threadid=125;start=40#msg1206 date=1065088]
and the end result should be [quote="Jon_doe"]
使这个 REGEXP_REPLACE
工作的正确语法是什么?
What is the proper syntax to make this REGEXP_REPLACE
work?
推荐答案
这里要进行很多转义:
REGEXP_REPLACE(message, "\[quote\sauthor=(.+)\slink=[^\]]+]", "\[quote="\1"\]")
请注意,您必须通过 \1
这篇关于在 MariaDB 中使用 REGEXP_REPLACE 进行正则表达式查找和替换的正确语法是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:在 MariaDB 中使用 REGEXP_REPLACE 进行正则表达式查找和替换的正确语法是什么?
基础教程推荐
- 在 VB.NET 中更新 SQL Server DateTime 列 2021-01-01
- 将数据从 MS SQL 迁移到 PostgreSQL? 2022-01-01
- ERROR 2006 (HY000): MySQL 服务器已经消失 2021-01-01
- 无法在 ubuntu 中启动 mysql 服务器 2021-01-01
- SQL Server 中单行 MERGE/upsert 的语法 2021-01-01
- SQL Server 2016更改对象所有者 2022-01-01
- SQL Server:只有 GROUP BY 中的最后一个条目 2021-01-01
- 如何在 SQL Server 的嵌套过程中处理事务? 2021-01-01
- Sql Server 字符串到日期的转换 2021-01-01
- 使用pyodbc“不安全"的Python多处理和数据库访问? 2022-01-01