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

标签 mysql sql regex

是否可以通过匹配模式来进行 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\/(.*)\/就像使用正则表达式一样并返回上述记录。

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

最佳答案

如果我理解正确,你可以使用正则表达式:

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

关于mysql - 通过正则表达式匹配进行 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52637587/

相关文章:

mysql - #1064 从表中删除项目时

从网络浏览器调用时出现 php 奇怪问题

Mysql:如何为排名列表选择最近 24 小时的前 10 名用户(并避免多个用户条目)

c# - SQLCommand.ExecuteReader() 不限于只读语句

php - 仅当两个条件都满足时才在单个 sql 语句中选择两行

php - 按名称对 MySQL 列进行排序的脚本

SQL 为每个组选择前 1 个

Python正则表达式删除花括号内的子字符串

regex - awk if 条件中的数值表达式

python - 一些关于 Python 正则表达式的帮助