SQL-计算所有文件扩展名

时间:2018-09-27 15:28:41

标签: mysql sql

我希望有人能帮助我。 我有一个表,在其中可以获取文件ID和文件名。我的目标是获取每个文件扩展名的数量。

这是表格的示例:

FILEID           FILENAME
  1              file1.pdf
  2              file2.png
  3              file3.jpg
  4              file4.pdf
  5              file5.png

我正在尝试得到这样的东西

Extension        Count
.pdf              2
.png              2
.jpg              1

我可以获取'。'之后的所有信息。使用以下查询,但我似乎无法获得计数

select SUBSTRING(filename,charindex('.',filename,1),5)
from FILES

谢谢

2 个答案:

答案 0 :(得分:2)

使用substring_index()

select substring_index(filename, '.', -1) as suffix, count(*)
from files
group by suffix;

这不包括'.'。如果需要的话,将其放回原处:

select concat('.', substring_index(filename, '.', -1)) as suffix, count(*)
from files
group by suffix;

答案 1 :(得分:0)

您可以将substring()instr()函数一起使用:

select substring(filename,instr(filename,'.'),length(filename)) as extension,
       count(1) as count
  from files
 group by extension

Rextester Demo for MySQL case

编辑:我意识到您正在使用MS-SQL,因此可以使用:

select substring(filename,charindex('.',filename,1),5) as extension,
       count(1) as count
  from files
 group by substring(filename,charindex('.',filename,1),5);

Rextester Demo for MS-SQL case