MySQL 如何在MySQL中从文件名表中选择所有不同的文件名扩展名?

MySQL 如何在MySQL中从文件名表中选择所有不同的文件名扩展名?

在MySQL中,我们经常需要从一张包含文件名列的表中查询出不同的文件扩展名。这个问题应该如何处理呢?下面,我们将解析如何在MySQL中实现这一功能。

阅读更多:MySQL 教程

创建测试表

首先,为了方便后续的演示和测试,我们需要在MySQL中创建一个测试表,代码如下(记得先确保已经连接到MySQL服务器):

CREATE TABLE file_names (
  id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  file_name VARCHAR(255) NOT NULL
);

我们通过上述代码成功创建了一张名为“file_names”的表,这张表包含了两个字段:id和file_name。其中,id是自增的int型主键,file_name是varchar(255)型的列。

接下来,我们需要往这个表中插入一些数据。代码如下:

INSERT INTO file_names (file_name)
VALUES('test.doc'), ('app.exe'), ('source.zip'), ('data.docx'), ('app.exe'), ('data.csv'), ('log.txt');

上述代码向表中插入了7条数据,包括了不同的文件类型,并且重复出现了两个exe类型文件的记录。

现在,我们已经建立好了测试环境,接下来我们来解决这个问题。

解决方案

我们可以使用MySQL中的substring_index函数和distinct函数来实现任务。

首先,我们通过substring_index函数来提取文件名中的扩展名。这个函数的语法如下:

SUBSTRING_INDEX(str,delim,count)

其中,str是需要处理的字符串,delim是指定分割符,count表示第几个分割符后的字符串结果。这里,我们使用点号“.”作为分割符,然后使用负数指定在倒数第二个点号后的单词作为结果,代表的就是扩展名。

下面是我们的查询代码:

SELECT DISTINCT SUBSTRING_INDEX(file_name, '.', -1) as extension_name
FROM file_names;

本查询能够从我们的表中查出不同的扩展名。

完整代码演示

下面是完整的MySQL查询代码,包括前面建表和插入数据的步骤。

CREATE TABLE file_names (
  id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  file_name VARCHAR(255) NOT NULL
);

INSERT INTO file_names (file_name)
VALUES('test.doc'), ('app.exe'), ('source.zip'), ('data.docx'), ('app.exe'), ('data.csv'), ('log.txt');

SELECT DISTINCT SUBSTRING_INDEX(file_name, '.', -1) as extension_name
FROM file_names;

执行上述代码后,可以看到查询结果为:

extension_name
--------------
doc
exe
zip
docx
csv
txt

这个查询结果正确展示了我们表中出现的不同的文件类型。

结论

本文通过MySQL中的substring_index函数和distinct函数提取文件名中的扩展名,并成功查询出不同的扩展名。这个方法不只是局限于文件类型的选择,同时也可以应用于其他列中的数据分析。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程