【问题标题】:Get row from mysql using specific value with regexp ( json string )使用带有正则表达式(json字符串)的特定值从mysql获取行
【发布时间】:2017-01-04 15:31:26
【问题描述】:

我正在使用 Array JSON String 将权限存储到数据库中,并且我想通过权限特定权限来选择它们。目前我是这样选择它们的:

  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 字符串。

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

【问题讨论】:

  • @e4c5 我有 5.5 的 mysql 版本
  • 就像重复说的那样,如果 oyu 在 mysql 5.5 上,你不应该使用 JSON,你会遇到各种各样的问题。要么升级要么放弃这种设计。阅读“数据库规范化”

标签: mysql arrays json regex


【解决方案1】:

如果您在字段中只有数字,您可以更改您的正则表达式以仅在您正在寻找的字符串(这里是“3”)没有立即接近它的另一个数字时取值:

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

【讨论】:

    【解决方案2】:
    REGEXP '[[:<:]]3[[:>:]]'
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-24
      • 1970-01-01
      • 2023-01-05
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 2023-01-17
      相关资源
      最近更新 更多