sql список записей в пределах пути - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть основная таблица, содержащая 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 голосов
/ 10 декабря 2018

Используйте 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/', '/', '') )
...