如何使用正则表达式在mysql中搜索JSON数据

时间:2016-03-04 13:30:06

标签: mysql json regex expression strongloop

我是正则表达式的新手,我已将JSON数据存储在表中。我想基于userId获取数据,userId是Users Object的属性。

示例:如果用户包含513

,我想获取所有记录

我的表数据示例:

 Table name:share

Id  name            sharedusers
1   xxxx            {"accessType":0,"permission":"1","specificUsers":
                    [{"users":"502,512,513","permission":"1"}]}

2   yyy             {"accessType":0,"permission":"1","specificUsers":
                    [{"users":"47,52,60","permission":"1"}]} 

3   zzzz            {"accessType":0,"permission":"1","specificUsers":
                    [{"users":"502,512,513","permission":"1"}]}  
  

我已尝试过此代码,但我收到所有记录,未应用过滤器

SELECT * FROM share where sharedusers  REGEXP '"users":"[[:<:]]513[[:>:]]"';

请提供任何样品。

2 个答案:

答案 0 :(得分:2)

您可以使用

REGEXP '"users":"[^"]*[[:<:]]513[[:>:]]'

此处添加了[^"]*"以外的0 +个字符),并删除了最终",以便有效地匹配513作为一对引号内的整个字词包含值的那个。

答案 1 :(得分:1)

升级到MySQL 5.7并使用内置函数来查询JSON列。