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

MySQL中JSON_CONTAINS查询JSON对象失效的问题咨询

JSON_CONTAINS查询JSON对象值不生效的原因及解决办法

核心原因

JSON_CONTAINS函数的匹配逻辑是严格匹配JSON结构,而非单纯查找值:

  • 当字段是JSON数组[45,46]时,46是数组的直接元素,JSON_CONTAINS(room_category, 46)能精准匹配到数组中的该元素,所以查询生效。
  • 当字段是JSON对象{"1": 45, "2": 46}时,46是对象中某个键对应的值,并非对象的直接子元素,直接传入46无法匹配到对象的结构,因此查询无结果。

解决方法

要查询JSON对象中所有值是否包含目标值,需要指定JSON路径来遍历对象的所有属性值,修改后的查询语句如下:

SELECT * FROM rooms WHERE JSON_CONTAINS(`room_category`, '46', '$.*');
  • $.*是JSON路径表达式,表示匹配当前JSON对象下的所有属性值。
  • 如果目标值是字符串类型(比如"46"),需要用单引号包裹参数;如果是数值类型,直接传46也可,但统一用字符串形式能避免类型不匹配问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 21:22:03