SQLite:从路径中隔离文件扩展名

时间:2015-12-22 01:15:24

标签: sqlite

我需要将文件扩展名与SQLite中的路径隔离开来。我在这里阅读了帖子(SQLite: How to select part of string?),其中有99%。

然而,解决方案:

 select distinct replace(column_name, rtrim(column_name, replace(column_name, '.', '' ) ), '') from table_name;
如果文件没有扩展名(即文件名中没有'。'),则

会失败,因此它应该返回一个空字符串。有没有办法陷阱这个?

请注意,此上下文中的文件名是最终'\'之后的位 - 它不应该在完整路径中搜索'.'s,就像它现在一样。

我认为应该可以使用进一步嵌套的rtrimsreplaces进行此操作。

1 个答案:

答案 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字段在此实现中必须包含反斜杠(' \') - 即它必须是完整路径。