我有以下例子:
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返回:
result_1 | result_2
---------|-----------
#world | #everyone如您所见,PREG_CAPTURE是:
PREG_CAPTURE(pattern, subject [, capture-group] [, occurence])我只需要返回所有的ocurrence,直到结果是同一列上的空为止。因此,我将只得到一个列结果,而不是有几个result_x列。另外,我需要对这些结果进行分组,并将它们计数到单独的列中。
因此,结果将是:
result | count
----------|-------
#world | 1
#everyone | 1我怎样才能做到这一点?
我使用以下库在mysql上使用regex用法:preg
发布于 2015-11-26 01:17:49
MySQL遵循一个基本约定,即: SELECT's只能选择给定子集的一部分,它永远不能创建给他的更多行。因此,如果在子句上返回10行,SELECT语句不能产生15行输出。
我认为另一个选项是在WHERE子句上使用基本的regexs,然后将单行结果分割成多个列,但这基本上就是PREG_CAPTURE (用户定义的函数)已经提供给您的。
对不起,我不能再帮你了。
https://stackoverflow.com/questions/33922545
复制相似问题