Mysql SQL-计算所有文件扩展名

Mysql SQL-计算所有文件扩展名,mysql,sql,Mysql,Sql,我希望有人能帮助我。 我有一个表格,可以从中获取文件id和文件名。我的目标是获得每个文件扩展名的数量 这是表格的一个示例: FILEID FILENAME 1 file1.pdf 2 file2.png 3 file3.jpg 4 file4.pdf 5 file5.png 我想得到这样的东西 Extension

我希望有人能帮助我。 我有一个表格,可以从中获取文件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
谢谢

使用
子字符串\u index()

这不包括
。如果您需要,请将其带回:

select concat('.', substring_index(filename, '.', -1)) as suffix, count(*)
from files
group by suffix;
使用
子字符串\u index()

这不包括
。如果您需要,请将其带回:

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

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

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

编辑:我意识到您正在使用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);

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

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

编辑:我意识到您正在使用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);


为什么你不能数一数?难道你不知道如何使用
COUNT()
函数和
groupby
?自从MySQL拥有
CHARINDEX()
以来,你似乎在使用
MSSQL
,而不是
MySQL
,不是吗?@BarbarosÖzhan是的,语言不是都一样吗?抱歉,我是一种新的数据库。SQL有很多标准规则,但有些函数和规则可能因DB品牌而异。i、 e.可能是产品的特殊性。我认为您的数据库是MS-SQL(或SQL server),您可以将标记转换为
SQL server
。为什么您不能获得计数?难道你不知道如何使用
COUNT()
函数和
groupby
?自从MySQL拥有
CHARINDEX()
以来,你似乎在使用
MSSQL
,而不是
MySQL
,不是吗?@BarbarosÖzhan是的,语言不是都一样吗?抱歉,我是一种新的数据库。SQL有很多标准规则,但有些函数和规则可能因DB品牌而异。i、 e.可能是产品的特殊性。我认为您的DB是MS-SQL(或SQL server),您可以将标记转换为
SQL server
。我得到的信息是:“substring\u index”不是可识别的内置函数名。@sergio089
substring\u index()
是MySQL的一部分,也许从远古时代就开始了()。如果您没有使用MySQL,我建议您用适当的数据库标记问另一个问题。我得到的信息是:“substring_index”不是可识别的内置函数名。@sergio089
substring\u index()
是MySQL的一部分,也许从远古时代就开始了()。如果您没有使用MySQL,我建议您用适当的数据库标记问另一个问题。我得到的信息是:'instr'不是可识别的内置函数名。@sergio089您的数据库版本是什么?(它从MySQL 3.23版开始)我得到消息:“instr”不是一个可识别的内置函数名。@sergio089您的DB版本是什么?(从MySQL 3.23版开始)