mysql - 使用正则表达式(json字符串)使用特定值从mysql获取行

标签 mysql arrays json regex

我正在使用数组 JSON 字符串将权限存储到数据库中,并且我想通过特定于权限的权限来选择它们。此时我像这样选择它们:

  1 | Dog   | [3,4]
  2 | Cat   | [33,4]
  3 | Tiger | [5,33,4]
  4 | wolf  | [3,5]


 SELECT * FROM `pages` WHERE access REGEXP '([^"])3([^"])'

它可以工作,但没有达到应有的效果。这个查询给了我包含 3 的所有记录,但也给出了包含 33 的记录。我的问题是我必须如何格式化我的正则表达式才能将特定值的行获取到 json 字符串中。

p.s 我有 mysql 5.5,所以据我所知,这个版本不支持 json 函数

最佳答案

如果字段中只有数字,则可以更改正则表达式,使其仅采用您要查找的字符串(此处为“3”)没有紧邻的其他数字的值:

SELECT * FROM `pages` WHERE access REGEXP '([^"0-9])3([^"0-9])'    

关于mysql - 使用正则表达式(json字符串)使用特定值从mysql获取行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41467497/

相关文章:

javascript - 搜索从 api 调用返回的 json

javascript - 使用 ng-options 仅选择 JSON 对象的属性名称

javascript - 访问 JSON 数组中的对象 (JavaScript)

数字列上的 MySQL 索引使查询变慢

Php Login/Mysql 检查 mysql 不适用于 SHA512

php - 自动修复丢失的 ID

mysql - 更新语句导致字段更新为 NULL 或最大值

arrays - mongodb - 如果数组中的元素之一与查询匹配,则忽略文档

arrays - 有没有办法衡量列表的排序情况?

c# - 将 Swagger 转换为 C# 对象