gpt4 book ai didi

PHP+MySQL : searching using wildcards

转载 作者:行者123 更新时间:2023-11-29 07:16:19 24 4
gpt4 key购买 nike

所以,我在数据库中有以下行:

1 |/用户/

2 |/用户/管理员/

3 |/用户/管理员/*

4 |/用户/管理员/迈克/

5 |/用户/管理员/史蒂夫/文档/

输入的URL是/users/admin/steve/,目标是从数据库中找到匹配的URL。

我想返回 #3 作为正确的行,因为通配符“*”指定任何内容都可以代替星号。执行此操作的最有效方法是什么?

这是我的初步想法,但我相信它们可以改进:

  1. 进行查询以查看是否存在完全匹配的 URL
  2. 如果没有匹配项,则以相反的顺序检索所有以“*”作为最后一个字符的行(因此更具体的 URL 优先)
  3. 对于每一行,如果它(减去“*”)匹配输入的 URL,则返回它
  4. 如果什么都没找到,那我们就完了

最佳答案

这是我的做法:

SELECT * FROM mytable AS m
WHERE <input-url> = m.urlpattern
OR <input-url> REGEXP REPLACE(m.urlpattern, '*', '.*');

REPLACE() 是将 globbing-style 通配符更改为等效的正则表达式通配符。

关于PHP+MySQL : searching using wildcards,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/364832/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com