1

我有一个在列中包含 URL 的数据库表。我想根据用户所在的页面显示某些数据,如果不是直接匹配,则默认为“父”页面。如何找到值是提交 URL 的一部分的列?

例如。我有 www.example.com/foo/bar/baz/here.html;我希望看到(在对列值的长度进行排序之后):

  • www.example.com/foo/bar/baz/here.html
  • www.example.com/foo/bar/baz
  • www.example.com/foo/bar
  • www.example.com/foo
  • www.example.com

当然,如果所有这些 URL 都在表中。

是否有内置函数或者我需要创建一个程序?谷歌搜索不断让我喜欢和 REGEXP,这不是我需要的。我认为单个查询比截断 URL 并进行多个查询(URL 可能包含许多路径组件)要高效得多。

4

1 回答 1

1

简单翻转“Like”运算符:

SELECT * FROM urls WHERE "www.example.com/foo/bar/baz/here.html" LIKE CONCAT(url, "%");

http://sqlfiddle.com/#!2/ef6ee/1

于 2013-09-06T18:13:34.437 回答