当前位置: 首页 > news >正文

Mysql——》提取JSON对象和数组

推荐链接:
    总结——》【Java】
    总结——》【Mysql】
    总结——》【Redis】
    总结——》【Kafka】
    总结——》【Spring】
    总结——》【SpringBoot】
    总结——》【MyBatis、MyBatis-Plus】
    总结——》【Linux】
    总结——》【MongoDB】
    总结——》【Elasticsearch】

Mysql——》提取JSON对象和数组

  • 1. JSON对象
    • 1.1 提取JSON的key
    • 1.2 提取JSON的值
      • 1.2.1 提取所有key的值
      • 1.2.2 提取指定key的值
      • 1.2.3 提取指定key的值:去掉引号
  • 2. JSON数组
    • 2.1 提取JSON数组的值
      • 2.1.1 提取所有元素
      • 2.1.2 提取所有元素:指定key的值
      • 2.1.3 提取所有元素:指定key的值用逗号分隔
      • 2.1.4 提取指定索引的元素
  • 3. 总结

1. JSON对象

{"age": 11,"name": "张三"
}
-- 定义变量json
set @json:='{"age":11,"name":"张三"}';

1.1 提取JSON的key

JSON_KEYS函数用于提取JSON的key值

-- 提取所有key
SELECT JSON_KEYS(@json) AS `keys`;

1.2 提取JSON的值

JSON_EXTRACT函数用于提取JSON的值

  • $.*取所有值
  • $.key取单个值

1.2.1 提取所有key的值

-- 提取所有key的值
SELECT JSON_EXTRACT(@json, '$.*') AS `values`;

1.2.2 提取指定key的值

-- 提取指定key的值
SELECT JSON_EXTRACT(@json, '$."name"') AS extracted_name;

1.2.3 提取指定key的值:去掉引号

JSON_UNQUOTE函数对单个结果进行去引号操作

-- 提取指定key的值:去掉引号
SELECT JSON_UNQUOTE(JSON_EXTRACT(@json, '$."name"')) AS extracted_name;

2. JSON数组

[{"age": 11,"name": "张三"},{"age": 12,"name": "李四"}
]
-- 定义变量json_array
SET @json_array:='[{"age":11,"name":"张三"},{"age":12,"name":"李四"}]';

2.1 提取JSON数组的值

$[*] :JSON数组所有对象

$[0] :JSON数组第一个对象

$[*].key :JOSN数组所有对象,对应key的值

$[0].key :JSON数组第一个对象对应key的值

2.1.1 提取所有元素

JSON_TABLE函数将 JSON 数组展开成关系表的形式,方便获取所有元素。

-- 提取所有元素:以表格形式展示每个对象的age和name字段
SELECT element.*
FROM 
JSON_TABLE(@json_array,'$[*]' COLUMNS (age INT PATH '$."age"',name VARCHAR(255) PATH '$."name"')
) AS element;

2.1.2 提取所有元素:指定key的值

-- 提取所有元素:指定key的值
SELECT JSON_UNQUOTE(JSON_EXTRACT(@json_array, '$[*]."name"')) AS extracted_name;

2.1.3 提取所有元素:指定key的值用逗号分隔

-- 提取所有元素:指定key的值用逗号分隔
SELECT GROUP_CONCAT(names.name SEPARATOR ',') AS combined_names
FROM 
JSON_TABLE(@json_array,'$[*]' COLUMNS (name VARCHAR(255) PATH '$."name"')
) AS names;

2.1.4 提取指定索引的元素

-- 提取指定索引的元素
SELECT JSON_EXTRACT(@json_array, '$[0]') AS element_0;
-- 提取指定索引的元素中指定key的值
SELECT JSON_EXTRACT(@json_array, '$[0]."name"') AS name_0;

3. 总结

-- 定义变量json
set @json:='{"age":11,"name":"张三"}';
-- 提取JSON的key
SELECT JSON_KEYS(@json) AS `keys`;
-- 提取所有key的值
SELECT JSON_EXTRACT(@json, '$.*') AS `values`;
-- 提取指定key的值
SELECT JSON_EXTRACT(@json, '$."name"') AS extracted_name;
-- 提取指定key的值:去掉引号
SELECT JSON_UNQUOTE(JSON_EXTRACT(@json, '$."name"')) AS extracted_name;-- ----------------------------------------------------------------------
-- 定义变量json_array
SET @json_array:='[{"age":11,"name":"张三"},{"age":12,"name":"李四"}]';
-- 提取所有元素:以表格形式展示每个对象的age和name字段
SELECT element.*
FROM 
JSON_TABLE(@json_array,'$[*]' COLUMNS (age INT PATH '$."age"',name VARCHAR(255) PATH '$."name"')
) AS element;
-- 提取所有元素:指定key的值
SELECT JSON_UNQUOTE(JSON_EXTRACT(@json_array, '$[*]."name"')) AS extracted_name;
-- 提取所有元素:指定key的值用逗号分隔
SELECT GROUP_CONCAT(names.name SEPARATOR ',') AS combined_names
FROM 
JSON_TABLE(@json_array,'$[*]' COLUMNS (name VARCHAR(255) PATH '$."name"')
) AS names;
-- 提取指定索引的元素
SELECT JSON_EXTRACT(@json_array, '$[0]') AS element_0;
-- 提取指定索引的元素中指定key的值
SELECT JSON_EXTRACT(@json_array, '$[0]."name"') AS name_0;
http://www.dtcms.com/a/329601.html

相关文章:

  • 微信小程序使用高德api实现导航至目的地
  • 【完整源码+数据集+部署教程】武器目标检测系统源码和数据集:改进yolo11-AggregatedAtt
  • Ansible 实操笔记:Playbook 与变量管理
  • 智驾系统架构解析
  • 深入解析Go设计模式:命令模式实战
  • 在verdi中查看波形中的glitch
  • 数字货币的去中心化:重构价值交换的底层逻辑​
  • 认识下windows下的设备管理器
  • 算法题打卡力扣第11题:盛最多水的容器(mid)
  • TF-IDF实战——《红楼梦》文本分析
  • 深度学习(5):激活函数
  • 敏感数据目录是什么?如何快速构建企业自身的敏感数据目录
  • flex-wrap子元素是否换行
  • Linux:磁盘管理
  • 使用HtmlAgilityPack+PuppeteerSharp+iText7抓取Selenium帮助文档
  • 学习嵌入式的第十九天——Linux——文件编程
  • 【MyBatis批量更新实现】按照list传入批量更新
  • java中数组和list的区别是什么?
  • 如何生成.patch?
  • 旧版MinIO的安装(windows)、Spring Boot 后端集成 MinIO 实现文件存储(超详细,带图文)
  • Spring Boot 3 连接池最大连接数设置建议
  • HTTP 协议详细介绍
  • Spring事务管理实战:从注解到进阶
  • SQL 查询慢?先从 EXPLAIN 看起
  • 可视化调试LangChain SQLChatMessageHistory:SQLite数据库查看全攻略
  • 智算赋能:移动云助力“世界一流数据强港”建设之路
  • 什么是内外网文件传输?如何确保文件在内外网间安全、高效地传输呢?
  • 层次视觉 Transformer 与分布级特征精炼:面向多模态疾病诊断与机器遗忘的深度学习框架研究
  • [idekCTF 2025] diamond ticket
  • C#自定义日期时间选择器