查询postgres以获取不同的子字符串

时间:2018-10-16 16:16:41

标签: sql postgresql

我有一个包含120k行(包括文件名)的继承表。整个文件名中大约有12,000个子字符串被复制。每个文件名都是根据一个奇怪的命名约定来命名的,但它们都基于相同的子字符串。 例如,一个可能称为“ apple-5pxl.mov”,另一个可能称为“ c-5pxl.mov”,另一个可能称为“ 76_5pxl.mov” ...而其他可能称为“ apple-234x.mov”, '76_234x.mov'

如何返回不同子字符串数的计数和列表?在上面的示例中,将有2个(5xpl.mov和234x.mov)

1 个答案:

答案 0 :(得分:1)

我认为您可以将substring()与模式参数一起使用:

select substring(filename from '[^-_]*$') as pat, count(*)
from t
group by pat;

该模式似乎是字符串末尾用连字符或下划线分隔的任何内容。