用于在路径列中查找最佳匹配的SQLite查询

smdnsysy  于 2023-05-18  发布在  SQLite
关注(0)|答案(1)|浏览(181)

我的SQLite数据库中有一列包含文件路径。
给定一个任意文件路径,我需要返回该文件路径的最佳匹配
如果路径列包含:

/my/folder/foo
/my/folder/foo/bar
/my/other_folder/other_foo
/my/other_folder/other_foo/other_bar

如果我使用路径/my/folder/foo/images/png/myimage.png进行查询,它应该返回/my/folder/foo
如果我使用路径/my/folder/foo/bar/pdf/mypdf.pdf进行查询,它应该返回/my/folder/foo/bar
请注意,查询中使用的路径通常比表中存储的路径长
我一直在使用“正常”和“递归”查询来解决这个问题,但没有成功,所以如果有人能提供任何建议,我将不胜感激

68de4m5k

68de4m5k1#

如果我没理解错的话,我们可以过滤搜索参数开头匹配的路径,然后保留字符最多的路径。
所以:

select *
from mytable
where :param like path || '/%'
order by length(path) desc
limit 1

...其中:param表示查询的输入参数。

相关问题