用于查找文件路径的SQLite查询

用于查找文件路径的SQLite查询,sql,sqlite,Sql,Sqlite,我的SQLite数据库中有一列包含文件路径。给定文件路径的一部分,我需要返回所有下一个文件夹。我还想返回下一部分是否是字符串中的最后一个路径(或者不以“/”结尾)。因此,如果我有文件夹: /my/folder/one /my/folder/two /my/folder/path/three /another/path /one/two/three 我有一条路: /my/folder/ 结果将返回以下内容: +----------+------+ | isLast | item | +--

我的SQLite数据库中有一列包含文件路径。给定文件路径的一部分,我需要返回所有下一个文件夹。我还想返回下一部分是否是字符串中的最后一个路径(或者不以“/”结尾)。因此,如果我有文件夹:

/my/folder/one
/my/folder/two
/my/folder/path/three
/another/path
/one/two/three
我有一条路:

/my/folder/
结果将返回以下内容:

+----------+------+
| isLast   | item |
+----------+------+
|    1     | one  |
|    1     | two  |
|    0     | path |
+----------+------+
我已经为此挣扎了一段时间,如果有人能提供任何指导,我将不胜感激。

此查询:

SELECT item NOT GLOB '*/*' AS isLast,
       item
FROM (SELECT substr(MyPath, length('/my/folder/') + 1) AS item
      FROM MyTable
      WHERE MyPath GLOB '/my/folder/' || '*')
将为您提供如下结果:

isLast项目
------  ----
一个
一二
0路径/3
删除子路径需要,这是最近在SQLite 3.7.15中引入的:

SELECT isLast,
       CASE WHEN isLast
         THEN item
         ELSE substr(item, 1, instr(item, '/') - 1)
       END AS item
FROM (SELECT item NOT GLOB '*/*' AS isLast,
             item
      FROM (SELECT substr(MyPath, length('/my/folder/') + 1) AS item
            FROM MyTable
            WHERE MyPath GLOB '/my/folder/' || '*'))

您在SQL中已经有文件夹路径了吗?是的,文件夹路径存储在单独的列中。3.7.15是6天前发布的!结果证明你的答案在最前沿的后面也许您想更新它,以显示您可以使用
instr()
执行哪些操作?不幸的是,我将此用于Android应用程序。我怀疑SQLite是否会很快更新:)。不过还是要谢谢你的更新!