查找作为给定字符串的起始字符串的列值。

时间:2013-09-06 18:03:38

标签: mysql sql regex database

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

EG。我有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当然都在表中。

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

1 个答案:

答案 0 :(得分:1)

简单转过“赞”操作符:

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

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