SQLite:如何只选择文件名而不选择扩展名?

SQLite:如何只选择文件名而不选择扩展名?,sqlite,Sqlite,我需要从我有的一个表中提取不带扩展名的文件名 目前我已经使用 SELECT filename FROM files 用于返回整个文件名(Jessica.Timber.mp3)。那么,是否可以使用sqlite(例如:Jessica.Timber)只获取文件名?文件可能包含多个“.”,但只应删除最后一个点,后跟ext 我尝试了以下查询,如果扩展名只有3个字母长(例如:*.mp3),则会提供结果,但如果扩展名超过3个字母长(例如:*.flac),则会失败 SQLite没有任何可以帮助实现这

我需要从我有的一个表中提取不带扩展名的文件名

目前我已经使用

SELECT filename FROM files     
用于返回整个文件名(Jessica.Timber.mp3)。那么,是否可以使用sqlite(例如:Jessica.Timber)只获取文件名?文件可能包含多个“.”,但只应删除最后一个点,后跟ext

我尝试了以下查询,如果扩展名只有3个字母长(例如:*.mp3),则会提供结果,但如果扩展名超过3个字母长(例如:*.flac),则会失败

SQLite没有任何可以帮助实现这一点的方法


创建递归CTE是可能的,但最简单的方法是检索整个文件名并删除代码中的扩展名。

下面是查询-无论扩展名长度如何,都将获得不带扩展名的文件名。文件名可以包含任意数量的
字符(已测试和验证)

测试:

然后,上述代码生成:

ph.otoJpg.
ph.otoJpeg.

您的数据库存在一个设计缺陷,在一个字段中存储了两项信息(文件名和文件扩展名)。如果控制数据库的结构,请尝试对两个单独的字段进行重构,并在写入而不是读取记录时拆分信息。
select replace(filename
             , '.' || replace(filename
                            , rtrim(filename, replace(filename, '.', '') )
                            , '')
             , '')
  from files;
create table files (filename);
insert into files values ("ph.otoJpg.jpg"), ("ph.otoJpeg.jpeg");
ph.otoJpg.
ph.otoJpeg.