You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL 5.7中如何查询JSON数组meta->grant_ids是否包含值5?

解决MySQL 5.7中查询JSON数组包含指定值的问题

你的原语句无法生效的原因是:meta->>"$.grant_ids" 返回的是字符串形式的数组(比如"[5,7]"),用IN(5)是将这个字符串与数字5直接比较,显然无法匹配。在MySQL 5.7中,要查询JSON数组包含指定值,推荐使用以下两种方法:

方法1:使用JSON_CONTAINS函数

这是最直接的方式,专门用于检查JSON文档是否包含指定元素:

SELECT * FROM content.banners 
WHERE meta IS NOT NULL 
AND JSON_CONTAINS(meta->'$.grant_ids', CAST(5 AS JSON));
  • meta->'$.grant_ids' 提取出grant_ids对应的JSON数组
  • CAST(5 AS JSON) 将数字5转换为JSON类型,确保与数组内的元素类型匹配
  • 加上meta IS NOT NULL避免null值干扰查询结果

方法2:使用JSON_SEARCH函数

该函数会返回匹配元素的JSON路径,若存在则结果不为null:

SELECT * FROM content.banners 
WHERE JSON_SEARCH(meta, 'one', 5, NULL, '$.grant_ids') IS NOT NULL;
  • 参数'one'表示只返回第一个匹配的路径
  • '$.grant_ids'指定搜索范围为grant_ids数组

内容的提问来源于stack exchange,提问作者timpone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 10:51:09