我是正则表达式的新手,我已将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[[:>:]]"';
请提供任何样品。
答案 0 :(得分:2)
您可以使用
REGEXP '"users":"[^"]*[[:<:]]513[[:>:]]'
此处添加了[^"]*
("
以外的0 +个字符),并删除了最终"
,以便有效地匹配513
作为一对引号内的整个字词包含值的那个。
答案 1 :(得分:1)
升级到MySQL 5.7并使用内置函数来查询JSON列。