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

如何查询MySQL嵌套JSON对象中$.results包含false布尔值的行

MySQL JSON列查询$.results下存在布尔false值的方案

适配MySQL 5.7版本方案

该方案利用JSON序列化后的字符串特征实现,实现成本最低:

  • 实现思路:先提取$.results节点,转成普通字符串后,匹配JSON序列化后布尔false的固定格式"任意key":false
  • 示例代码(请自行替换表名your_table和JSON列名json_col):
SELECT * 
FROM your_table
WHERE JSON_UNQUOTE(JSON_EXTRACT(json_col, '$.results')) LIKE '%"%":false%';

也可以用MySQL5.7支持的简写语法简化代码:

SELECT * 
FROM your_table
WHERE json_col->>'$.results' LIKE '%"%":false%';
  • 注意事项:如果你的业务场景中$.results下存在值为字符串"false"的情况,该方法会误判。如果需要严格区分布尔false和字符串"false",建议使用MySQL8+的严谨方案。

适配MySQL 8.0+版本方案

该方案利用8.0新增的JSON_TABLE函数实现,逻辑严谨无歧义:

  • 实现思路:将$.results下的所有key拆分为临时行,逐个校验对应的值是否为布尔false,只要存在匹配就返回对应原行
  • 示例代码:
SELECT DISTINCT t.*
FROM your_table t,
JSON_TABLE(
  JSON_KEYS(t.json_col, '$.results'),
  '$[*]' COLUMNS (
    result_key VARCHAR(255) PATH '$'
  )
) AS keys_temp
WHERE JSON_EXTRACT(t.json_col, CONCAT('$.results.', keys_temp.result_key)) = FALSE;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 19:36:03