我需要将文件扩展名与SQLite中的路径隔离开来。我在这里阅读了帖子(SQLite: How to select part of string?),其中有99%。
然而,解决方案:
select distinct replace(column_name, rtrim(column_name, replace(column_name, '.', '' ) ), '') from table_name;
如果文件没有扩展名(即文件名中没有'。'),则会失败,因此它应该返回一个空字符串。有没有办法陷阱这个?
请注意,此上下文中的文件名是最终'\'
之后的位 - 它不应该在完整路径中搜索'.'s
,就像它现在一样。
我认为应该可以使用进一步嵌套的rtrims
和replaces
进行此操作。
答案 0 :(得分:1)
感谢。是的,你可以这样做:
1)创建一个名为" extension"的标量函数。在SQLiteStudio的QtScript中
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
...在名为DATA的表中列出名为PATH的列中的不同文件扩展名。
请注意,PATH字段在此实现中必须包含反斜杠(' \') - 即它必须是完整路径。