首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL PREG_CAPTURE正则表达式

MySQL PREG_CAPTURE正则表达式
EN

Stack Overflow用户
提问于 2015-11-25 17:13:00
回答 1查看 1.3K关注 0票数 1

我有以下例子:

代码语言:javascript
复制
SELECT
    PREG_CAPTURE('/(#[^ ]*)/i', sentence, 1, 1) AS result_1,
    PREG_CAPTURE('/(#[^ ]*)/i', sentence, 1, 2) AS result_2

FROM (
    SELECT 'Hello #world #everyone' AS sentence
) tmp

返回:

代码语言:javascript
复制
result_1 | result_2
---------|-----------
#world   | #everyone

如您所见,PREG_CAPTURE是:

代码语言:javascript
复制
PREG_CAPTURE(pattern, subject [, capture-group] [, occurence])

我只需要返回所有的ocurrence,直到结果是同一列上的为止。因此,我将只得到一个列结果,而不是有几个result_x列。另外,我需要对这些结果进行分组,并将它们计数到单独的列中。

因此,结果将是:

代码语言:javascript
复制
result    | count
----------|-------
#world    | 1
#everyone | 1

我怎样才能做到这一点?

我使用以下库在mysql上使用regex用法:preg

EN

回答 1

Stack Overflow用户

发布于 2015-11-26 01:17:49

MySQL遵循一个基本约定,即: SELECT's只能选择给定子集的一部分,它永远不能创建给他的更多行。因此,如果在子句上返回10行,SELECT语句不能产生15行输出。

我认为另一个选项是在WHERE子句上使用基本的regexs,然后将单行结果分割成多个列,但这基本上就是PREG_CAPTURE (用户定义的函数)已经提供给您的。

对不起,我不能再帮你了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33922545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档