通过正则表达式匹配进行SQL查询

时间:2018-10-04 01:06:34

标签: mysql sql regex php-mysqlidb qregularexpression

是否可以通过匹配模式进行SQL查询?我知道SQL允许使用通配符,但我认为它们不适合我的用例。

假设我有一个包含以下记录的表(以JSON表示):

表名称: url_stuff

{
    id: 2
    path: \/user\/(.*)\/
    value: "I am the user path"
}

然后假设我有以下表示URL路径的字符串:

/user/gandalfthewhite

我想进行查询以返回该记录。

SELECT * FROM url_stuff WHERE path LIKE '/user/gandalfthewhite'

这显然行不通,但是也许还有其他使用SQL的方式,例如/user/gandalfthewhite\/user\/(.*)\/匹配正则表达式并返回上面的记录。

显然,一种解决方案是从数据库中获取所有记录,然后在事后通过正则表达式进行搜索,但这对于大量记录而言不可扩展。理想情况下,我可以直接通过查询获取所有匹配的记录。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,则可以使用regexp:

SELECT *
FROM url_stuff
WHERE '/user/gandalfthewhite' REGEXP url