我有一个表,我用它来查询并获取一个匹配正则表达式(\/.+\/\?)
的列。
结果列的内容如下:
/Anything here/?
示例输出:
\abc\cdf\?....
\ab\?....
\abc\cdf\?....
\sb\?....
其中'....'
可以是任何
我想要的结果是\?
之前的唯一值,以便具有重复的正则表达式匹配内容的行只显示一次(\abc\cdf\?....
显示两次而不是一次)
\abc\cdf\?....
\ab\?....
\sb\?....
OR
\abc\cdf\?
\ab\?
\sb\?
我看起来非常多,但在oracle中找不到任何regexp_substr,但是在SQL中无效。
如果有人可以帮我解决那个很棒的SQL查询。
答案 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, '\\', ''))
);