使用正则表达式更新 MySQL 字段中的文本

使用正则表达式更新 MySQL 字段中的文本

我有一个带有 VARCHAR 字段的 MySQL 表description。以下是此字段中的示例值:

The quick brown fox jumps over the lazy dogThis is the second sentence.

我想更改文本,使两个句子之间有一个句号和空格。我想我可以用正则表达式解决这个问题,但我不知道如何在 SQL 中使用正则表达式。

如何使用正则表达式更新 MySQL 中的字段?

答案1

如果您使用 MariaDB(大多数 MySQL 与 MariaDB 兼容)。那么您可以使用正则表达式和反向引用。文档中提供了一个示例。

SELECT REGEXP_REPLACE('James Bond','^(.*) (.*)$','\\2, \\1') AS reorder_name;

给出

重新排序名称饰演 邦德

如果您想在数据为多行的字段中搜索,则上述搜索将不起作用。为此,您必须首先更改系统变量 default_regex_flags。即

SET GLOBAL default_regex_flags="DOTALL,MULTILINE";
SET SESSION default_regex_flags="DOTALL,MULTILINE";

仅供参考:默认情况下,此系统变量为空。

答案2

这个问题已经在 StackOverflow 上得到解答(https://stackoverflow.com/a/986870/2992519):

不。

但是如果你有权访问你的服务器,你可以使用用户定义函数(UDF),例如mysql-udf-regexp

相关内容