我将json数组存储在名为member_details的mysql字段中,
[{"religion":null,"caste":["2","3","4"],"sub_caste":["0","1","2"],"family_value":null,"family_status":null}]
现在,我要搜索种姓为3的成员。有时候,我需要搜索sub_caste 2
。
我该如何实现?
我尝试使用json_contains,但这给了我空的结果
select * from member where json_contains('member_details', '{"caste" : "2"}')
但结果为空。
答案 0 :(得分:1)
这是一种方法:
SELECT *
FROM yourTable
WHERE JSON_SEARCH(member_details->"$[0].caste", 'one', '3') IS NOT NULL;
语法member_details->"$[0].caste
首先使用[0]
访问外部数组中的第一个(也是唯一的)JSON元素。然后,它使用caste
访问.caste
键。最后,JSON_SEARCH
检查等级3数组中是否出现值3。
如果您需要搜索sub_caste
2,则可以使用类似的逻辑。
答案 1 :(得分:0)