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



我正在使用数组 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 字符串。

附言我有MySQL 5.5,所以我知道在这个版本上不支持json函数

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

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

也就是说,使用"单词边界"的东西。

最新更新