REGEXP_SUBSTR返回所有匹配项(mariaDB)

时间:2018-10-04 04:37:44

标签: 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`;

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

  

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

此刻仅返回第一个比赛:

  • CP?:24658

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

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

1 个答案:

答案 0 :(得分:0)

  1. 仅使用REGEXP即可找到有趣的行。将它们放在临时表中
  2. 重复处理临时表-但在使用{@ {1}}时将其删除。

您将对每个子表做什么?也许这将有助于我们设计出更好的方法。