如何使用正则表达式在 mysql 中搜索 JSON 数据
How to search JSON data in mysql using Regular expression
我是正则表达式的新手,我在table中存储了JSON个数据。我想根据userId取数据,userId是一个属性的Users对象
示例:如果用户包含 513,我想获取所有记录
我的table数据样本:
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"}]}
I have tried this code but I am getting all the records, filter is not applied
SELECT * FROM share where sharedusers REGEXP '"users":"[[:<:]]513[[:>:]]"';
请给任何样品。
您可以使用
REGEXP '"users":"[^"]*[[:<:]]513[[:>:]]'
这里,添加了[^"]*
(除"
之外的0+个字符)并删除了最后的"
以有效匹配513
作为一对内的整个单词包含值的引号。
升级到 MySQL 5.7 并使用内置函数查询 JSON 列。
我是正则表达式的新手,我在table中存储了JSON个数据。我想根据userId取数据,userId是一个属性的Users对象
示例:如果用户包含 513,我想获取所有记录
我的table数据样本:
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"}]}
I have tried this code but I am getting all the records, filter is not applied
SELECT * FROM share where sharedusers REGEXP '"users":"[[:<:]]513[[:>:]]"';
请给任何样品。
您可以使用
REGEXP '"users":"[^"]*[[:<:]]513[[:>:]]'
这里,添加了[^"]*
(除"
之外的0+个字符)并删除了最后的"
以有效匹配513
作为一对内的整个单词包含值的引号。
升级到 MySQL 5.7 并使用内置函数查询 JSON 列。