【发布时间】:2018-10-04 04:37:43
【问题描述】:
我需要在 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?:24658CP?23432:24658CP?:24658
【问题讨论】:
-
需要一个可以返回类似结果数组的函数,我不知道 MariaDB 是否有类似的东西。但是,您必须首先在数据库中完成这项工作吗?
-
是的,这是最快的方法,因为我必须获取数据库中潜在数千条记录的所有匹配项来处理它们。
标签: mariadb regexp-substr