REGEXP_SUBSTR 返回所有匹配项 (mariaDB)

Dri*_*ond 6 mariadb regexp-substr

我需要获取MariaDB表中文本字段中正则表达式的所有匹配项。据我所知REGEXP_SUBSTR是获取文本字段中正则表达式的匹配值的方法,但它总是在第一个匹配后返回,我想得到所有匹配

MariaDB 有什么办法可以做到这一点吗?

文本字段内容的示例如下:

@Generation {
// 1
True =>
    `CP?:24658` <= `CPV?:24658=57186`;
//`CP?23432:24658` <= `CPV?:24658=57186`

// 2
`CP?:24658` <> `CPV?:24658=57178` =>
    `CP?:24656` <> `CPV?:24656=57169`;
Run Code Online (Sandbox Code Playgroud)

我现在使用的选择表达式是:

CP\\?(?:\\d*:)*24658从 id = 1243 的表中选择 REGEXP_SUBSTR(textfield,' ') 作为 my_match;

目前仅返回第一个匹配项:

  • CP?:24658

我希望它返回所有匹配项:

  • CP?:24658
  • CP?23432:24658
  • CP?:24658

Ric*_*mes 2

  1. 仅用于REGEXP查找有趣的行。将它们放入临时表中
  2. 重复处理临时表——但SUBSTR在使用时将其删除。

您将如何处理每个子字符串?也许这将帮助我们设计出更好的方法。