在mysql中反向通配符查询(通配符可以驻留在数据库中吗?)

时间:2014-05-01 14:05:03

标签: mysql sql

抱歉标题不清楚。让我用一个例子来解释我的问题。

下面的URI表

id   |   uri     
---------------
1    | /admin%
2    | /cart%
3    | /account%

我想要的是,如果我在页面/cart/checkout/index.php上,以便能够查询数据库并获得id = 2。同样,如果我在/admin/edit.php?id=123中,我使用该值来查询数据库并获取id = 1

我如何将其视为反向通配符...通配符位于数据库而不是查询中。

如果可能的话,我将不胜感激任何有助于此工作的帮助

1 个答案:

答案 0 :(得分:1)

是。它会像你期望的那样工作:

select ut.*
from URITable ut
where @MYURL like ut.URIPattern;

这不能利用索引,因此它将进行顺序扫描。如果表只有几个模式,那应该没问题。如果您计划使用数千种模式执行此操作,性能可能会成为一个问题。