路径范围内的sql记录列表

时间:2018-12-10 14:07:50

标签: sql sqlite trim

我有一个包含URL的主表:

CREATE TABLE IF NOT EXISTS MasterTable (url, masterId, PRIMARY KEY(url), UNIQUE(masterId));

URL字符串看起来像这样:file:///Users/user1/Folder1/Folder2/.../FolderN/filename1.jpeg

现在,我需要编写一个查询,对于一个路径示例,path = 'file:///Users/user1/Folder1/Folder2/Folder3'将返回在该确切文件夹路径中但没有更远的文件名的所有masterId

我想我必须使用trim函数的某种组合,但我自己无法弄清楚。

1 个答案:

答案 0 :(得分:0)

使用LIKE,然后计算路径中有多少'/',以确保您没有获得更深的文件夹。

SELECT masterId
FROM MasterTable 
WHERE url like 'file:///Users/user1/Folder1/Folder2/Folder3/%'
  AND length(url) - length( replace(url, '/', '') ) = 8 

更通用:

 AND length(url) - length( replace(url, '/', '') ) = 
     length('file:///Users/user1/Folder1/Folder2/Folder3/') 
   - length( replace('file:///Users/user1/Folder1/Folder2/Folder3/', '/', '') )