我有一个包含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
函数的某种组合,但我自己无法弄清楚。
答案 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/', '/', '') )