SQLite:从路径中分离文件扩展名
问题描述:
我需要在SQLite中将路径中的文件扩展名隔离出来。我读过这里的帖子(SQLite: How to select part of string?),其中有99%。SQLite:从路径中分离文件扩展名
然而,溶液:如果一个文件具有(“”中的文件名,即没有)没有扩展,为此它应返回一个空字符串
select distinct replace(column_name, rtrim(column_name, replace(column_name, '.', '')), '') from table_name;
失败。有没有什么办法可以把这个陷阱?
请注意,在此上下文中的文件名是最后一个'\'
之后的位 - 它不应该在完整路径中搜索'.'s
,因为它在当时也是如此。
我认为它应该有可能使用进一步嵌套rtrims
和replaces
。
答
谢谢。是的,你可以做到这一点是这样的:
1)在QtScript在SQLiteStudio
2创建一个名为 “扩展” 标量函数)的代码如下:
if (arguments[0].substring(arguments[0].lastIndexOf('\u005C')).lastIndexOf('.') == -1)
{
return ("");
}
else
{
return arguments[0].substring(arguments[0].lastIndexOf('.'));
}
3)然后,在SQL查询编辑器,你可以使用
select distinct extension(PATH) from DATA
...到itemise从叫PATH中称为数据的表列中的不同的文件扩展名。
请注意,在此实现中PATH字段必须包含反斜线('\') - 即它必须是完整路径。
我不认为这是可能的普通SQLite3。但是,SQLite3支持自定义函数,这将使它微不足道。你使用SQLite3的哪种语言? – Amadan
我在SQLiteStudio中交互式地使用查询。 – Andrew17856
http://wiki.sqlitestudio.pl/index.php/User_Manual#Custom_SQL_functions – Amadan