我需要从我拥有的表之一中提取不带扩展名的文件名。
目前我已经使用过
SELECT filename FROM files
Run Code Online (Sandbox Code Playgroud)
用于返回整个文件名(Jessica.Timber.mp3)。那么是否可以使用 sqlite 仅获取文件名(例如: Jessica.Timber )?文件可能包含多个“.” 但只有最后一个点后面的 ext 应该被删除。
我尝试了以下查询,如果扩展名只有 3 个字母长(例如:*.mp3),它会提供结果,但如果扩展名超过这个长度(例如:*.flac),则会失败
SELECT substr(filename, -4, -100) from files;
Run Code Online (Sandbox Code Playgroud)
下面是查询 - 将为您提供不带扩展名的文件名,无论扩展名长度如何。文件名可以包含任意数量的.字符(经过测试和验证)
select replace(filename
, '.' || replace(filename
, rtrim(filename, replace(filename, '.', '') )
, '')
, '')
from files;
Run Code Online (Sandbox Code Playgroud)
测试:
create table files (filename);
insert into files values ("ph.otoJpg.jpg"), ("ph.otoJpeg.jpeg");
Run Code Online (Sandbox Code Playgroud)
那么上面的代码会产生:
ph.otoJpg.
ph.otoJpeg.
Run Code Online (Sandbox Code Playgroud)