mysql - 在 MySql 表中的 Json 数组中搜索

标签 mysql json

我将 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"}') 

但它给出了空结果。

最佳答案

这是一种方法:

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 是否出现在 caste 数组中。

如果您需要搜索 sub_caste 2,那么您可以使用类似的逻辑。

关于mysql - 在 MySql 表中的 Json 数组中搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53862304/

相关文章:

php - 文本区域、新行和 nl2br 的问题

java - javers 是否可以忽略 Java 对象的序列更改?

javascript - 将 JSON 解析为 HTML 表

php - 实现一个按钮将信息发送到另一个 php 文件?

Mysql时间戳查询

php - 如何从指向新页面的链接中获取选定的行

javascript - D3 - 使笔画宽度与第二个数据集共变

ios - Swift 3.0 - 从 XCode 包中读取 .JSON 文件

javascript - 如何使用 jQuery 将值与 JSON 对象中的名称进行匹配?

php - 检查密码时,只关心前8个字符