MySql版本: 5.7.19
表:用户
表格用户中的字段:比赛
类型字段竞赛: JSON
现场比赛中的数据示例
[{"name": "Mihaello Julders", "text": "any text", "photo": "photo.jpg", "profileLink": "any link"}, {"name": "Алексей Якобчук", "text": "any text", "photo": "photo.jpg", "profileLink": "any link"}]
问题: 如果属性名称包含指定的名称,则需要返回一个或多个对象。
我是否正确理解我需要使用
select
JSON_EXTRACT(members, "$[*].name") from `users` where JSON_EXTRACT(members, "$[*].name") = 'Mihaello Julders'
但是这不起作用,请告诉我该查询写什么正确的字?
答案 0 :(得分:0)
您的users
表格是什么样的?如果您要在问题中提到n
的{{1}}行,那么假设该表有一个users.contests
列,
contests
这将为您提供select
contests
from users
where JSON_EXTRACT(members, "$[*].name") = 'Mihaello Julders';
行用户竞赛,其中n
(您的json列)具有指定的users.members
属性(Mihaello Julders)。
编辑
有关更多信息,请参见docs。您提到上面的解决方案返回一个空集。这是因为您的用户表为空,或者是json出现问题-您正在寻找错误的名称,或者名称属性不在您认为的位置。
如果您的name
列中有值,例如
members
答案 1 :(得分:0)
学习文档后,我进行下一个查询
select
JSON_EXTRACT(contests, JSON_UNQUOTE(JSON_SEARCH(contests->'$[*].name', 'one', '%Mihaello%')))
from
users
这解决了我的问题