sql 路径范围内的记录列表

sql list of records within a path scope

我有一个母版 table 包含 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' 将 return 所有 masterId 在此确切文件夹路径中但不在更远的文件名。

我想我必须使用一些 trim 函数的组合,但我自己想不出来。

使用 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/', '/', '') )