我需要从我的一个表中提取没有扩展名的文件名。
目前我使用过
SELECT filename FROM files
使用返回整个文件名(Jessica.Timber.mp3)。那么是否可以使用sqlite获取文件名(例如:Jessica.Timber)?这些文件可能包含多个"。"但是应该删除只有最后一个点后面的分机。
我尝试了以下查询,如果扩展名只有3个字母长(例如:* .mp3),则会提供结果,但如果超过该字母,则会失败(例如:* .flac)
SELECT substr(filename, -4, -100) from files;
答案 0 :(得分:3)
以下是查询 - 无论扩展名长度如何,都可以获得没有扩展名的文件名。文件名可以包含任意数量的.
字符(经过测试和验证)
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.
答案 1 :(得分:0)
SQLite没有built-in string functions可以帮助解决这个问题。
可以创建递归CTE,但最简单的方法是检索整个文件名并删除代码中的扩展名。