从SQL中匹配regexp生成的列中获取唯一条目

时间:2015-09-25 12:23:26

标签: mysql regex grep

我有一个表,我用它来查询并获取一个匹配正则表达式(\/.+\/\?)的列。

结果列的内容如下: /Anything here/?
示例输出:

\abc\cdf\?....
\ab\?....
\abc\cdf\?....
\sb\?....

其中'....'可以是任何

我想要的结果是\?之前的唯一值,以便具有重复的正则表达式匹配内容的行只显示一次(\abc\cdf\?....显示两次而不是一次)

\abc\cdf\?....
\ab\?....
\sb\?....

OR

\abc\cdf\?
\ab\?
\sb\?

我看起来非常多,但在oracle中找不到任何regexp_substr,但是在SQL中无效。

如果有人可以帮我解决那个很棒的SQL查询。

1 个答案:

答案 0 :(得分:1)

如果你想要在最后\之前的所有内容,那么你可以使用substring_index()和一些字符串操作:

select substring_index(col, '\\',
                       length(col) - length(replace(col, '\\', ''))
                      ) as firstpart,
       count(*)
from table t
group by substring_index(col, '\\',
                         length(col) - length(replace(col, '\\', ''))
                        );