所以,我在DB中有以下行:
1 | /用户/
2 | /用户/管理员/
3 | /用户/管理员/ *
4 | /用户/管理员/麦克风/
5 | /用户/管理员/史蒂夫/文档/
输入网址为 / users / admin / steve / ,目标是从数据库中找到网址匹配。
我想将#3作为正确的行返回,因为通配符“*”指定任何东西都可以代替星号。这样做最有效的方法是什么?
这是我最初的想法,但我相信它们可以改进:
答案 0 :(得分:2)
我是这样做的:
SELECT * FROM mytable AS m
WHERE <input-url> = m.urlpattern
OR <input-url> REGEXP REPLACE(m.urlpattern, '*', '.*');
REPLACE()用于将globbing样式的通配符更改为等效的正则表达式通配符。
答案 1 :(得分:0)
如果我理解正确,这样的事情应该有效:
SELECT COALESCE(
(从您的查询中选择任何内容以查看是否有确切的网址),
(选择下一个近似值),
'SOL'
)