MySQL 5.7.22中如何按指定JSON键查询对应数据?
解决方案:MySQL 5.7.22查询JSON列指定键的数据
嘿,针对你要从functionalities表的JSON类型config列中提取show_image对应数据的需求,结合MySQL 5.7.22的特性,给你提供几种实用的实现方式:
1. 使用JSON_EXTRACT()函数(标准写法)
这是MySQL处理JSON提取最基础的函数,语法清晰直观:
SELECT JSON_EXTRACT(config, '$.show_image') AS show_image_data FROM functionalities;
- 说明:
'$.show_image'是JSON路径表达式,$代表JSON根节点,.show_image指定要提取的键名。
2. 使用简写操作符->(等价于JSON_EXTRACT)
MySQL提供了更简洁的语法糖,->和JSON_EXTRACT()功能完全一致:
SELECT config->'$.show_image' AS show_image_data FROM functionalities;
3. 使用->>操作符(提取无转义的字符串结果)
如果希望直接得到去除转义引号的纯字符串结果,可以用->>,它相当于JSON_UNQUOTE(JSON_EXTRACT(...)):
SELECT config->>'$.show_image' AS show_image_data_unquoted FROM functionalities;
4. 过滤仅包含show_image键的行(贴合你的WHERE逻辑)
如果需要像你示例中那样,只返回存在show_image键的行,可以搭配JSON_CONTAINS_PATH()函数做过滤:
SELECT JSON_EXTRACT(config, '$.show_image') AS show_image_data FROM functionalities WHERE JSON_CONTAINS_PATH(config, 'one', '$.show_image') = 1;
- 说明:
'one'表示只要JSON中存在至少一个指定路径(这里就是$.show_image)就返回该行,完美匹配你需求里的过滤逻辑。
以上方法在MySQL 5.7.22版本中都是完全支持的,你可以根据实际输出需求选择合适的写法~
内容的提问来源于stack exchange,提问作者VictorDev
相关产品推荐
相关产品推荐

