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.pswp.cn/news/918961.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/918961.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JSON值包含引号

目录背景代码正则说明背景 很多时候,在无法使用Gson等能处理非标准化JSON的工具时,需要对JSON值中的JSON限定符进行转义,使用正则比较方便,以对JSON值中的引号做转义为例 代码 private static String escapeUnescapedQuotes(St…

後端開發Python篇

書接上回:後端開發技術教學(五) 魔術方法、類、序列化-CSDN博客 必要資源: trae中下載網址: TRAE - The Real AI Engineer phpStudy 2018 : phpStudy - Windows 一键部署 PHP 开发环境 小皮出品 python解釋器:Welcome to Python.org 前言…

Python匿名函数的具体用法

引言 在Python编程中,匿名函数(即lambda函数)是一种简洁定义小型函数的方式。它无需通过def关键字命名,适用于需要临时函数或作为高阶函数参数的场景。本文将详细解析lambda函数的语法、应用场景及最佳实践。 定义与语法 官方定义…

ARM芯片架构之CoreSight SoC-400 组件介绍

CoreSight SoC-400 组件介绍1. Debug Access Port (DAP) 功能:DAP 是外部调试器与 SoC 内部调试基础设施的接口核心。它将调试端口(JTAG-DP 或 SW-DP)与多个访问端口(AP)连接起来,使调试器能够访问内存、外…

SynAdapt:通过合成连续思维链实现大语言模型的自适应推理

摘要:尽管链式思维(CoT)推理能提升模型性能,却因离散 CoT 标记(DCoT)的生成而带来显著时间开销。连续 CoT(CCoT)是更高效的替代方案,但现有方法受限于间接微调、对齐不足…

计算机毕设不知道选什么题目?基于Spark的糖尿病数据分析系统【Hadoop+Spark+python】

精彩专栏推荐订阅:在 下方专栏👇🏻👇🏻👇🏻👇🏻 💖🔥作者主页:计算机毕设木哥🔥 💖 文章目录 一、项目介绍选…

【Javaweb学习|黑马笔记|Day1】初识,入门网页,HTML-CSS|常见的标签和样式|标题排版和样式、正文排版和样式

【DAY1】 从今天开始Javaweb的学习了,学了Javaweb基础知识,HTML CSS常见的标签和样式 文章目录【DAY1】HTML-CSS1)初识2)入门3)常见标签和样式标题标题排版标题样式正文正文排版正文样式整体布局HTML-CSS 1&#xff…

企业现金流综合分析报告

企业现金流综合分析报告 执行摘要 本报告整合了基于同一现金流预测数据的多层级分析,包括基础、详细、高级和超详细视角,旨在为企业提供从日常管理到战略决策的全面现金流洞察。企业预计年度收入4080万英镑,毛利率稳定在36%,EBITDA率约10%,显示基本业务模式健康且盈利能…

StarRocks优化统计分析

业务需求:统计广告数据,生成流量漏斗,查看广告曝光、点击效果。 StarRocks原表结构: CREATE TABLE ad_events ( event_time DATETIME NOT NULL COMMENT 时间, event_time_hour DATETIME NOT NULL COMMENT 时间(分、秒为0), even…

k8s单master部署

一、部署 1、初始化 1.1、主机准备 1.2、防火墙与上下文 iptables -t nat -F iptables -t filter -F systemctl disable --now firewalldsetenforce 0 sed -i s/SELINUXenforcing/SELINUXdisabled/ /etc/selinux/config 1.3、免密登录 ssh-keygenssh-copy-id 192.168.11…

【大模型微调系列-03】 大模型数学基础直观入门

【大模型微调系列-03】 大模型数学基础直观入门🎯 本章目标:不要害怕数学!我们将通过可视化和简单代码,让你像"看电影"一样理解深度学习的数学原理。记住,深度学习的数学其实就是"让计算机学会调整参数…

科技赋能千年养生丨七彩喜艾灸机器人,让传统智慧触手可及

传统艾灸养生效果显著,却常因烟雾缭绕、操作繁琐、安全隐患等问题令人望而却步。如今,七彩喜艾灸机器人以创新科技破解痛点,将千年艾灸智慧与现代智能深度融合,让养生变得简单、安全、高效,为大众开启“无负担”的艾灸…

【web站点安全开发】任务2:HTML5核心特性与元素详解

目录 一、HTML元素 1、行内元素、块元素、行内块元素 2、替换元素和非替换元素 二、HTML5新增特性 1、语义化标签:提升页面结构化与可读性 2、原生多媒体支持:摆脱插件依赖 3、表单增强:提升交互与验证能力 4、Canvas 与 WebGL&#…

Notepad++插件开发实战:从零打造效率工具

通过定制插件提升文本处理效率300%​​ 一、插件开发核心价值​解决效率瓶颈的终极方案​​定制化工作流​深度集成编辑器功能(文档访问、选区操作、语法解析)自动化重复操作(批量替换、格式转换、数据提取)案例:法律文…

微服务单元测试组件(附源码)

背景 微服务的调试,哪怕是简单问题,需要启动9个服务,ui/nginx 网关 应用 auth 基础数据服务 redis nacos 平台服务 ,效率差得不行,准备开发一个支持微服务环境的单元测试组件, 组件解决3个问题&#xff1a…

【LeetCode 热题 100】55. 跳跃游戏

Problem: 55. 跳跃游戏 给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。 文…

Java-JVM是什么JVM的类加载机制

一.JVM是什么1.jvm是java虚拟机,是java程序运行的基础环境2.jvm运行的是java源代码经过编译后的class文件,这些class文件经过jvm负责解释或即时编译为对应平台的机器码并执行3.class文件也可以通过其他【jvm languages】经过编译后得到,例如s…

做亚马逊广告,有哪些提高效率的工具

"为什么每天花3小时调整广告却看不到效果?""如何避免高转化关键词被竞争对手抢走?""为什么手动调整预算总是慢市场半拍?""ACOS居高不下真的是关键词选错了吗?""有没有工具能真正实现…

研究学习3DGS的顺序

6 个核心基础模块 序号模块说明推荐学习顺序1📷 三维计算机视觉基础建立对3D场景、点云、体积的空间理解✅第一个2🧮 CT成像原理与图像表示理解CT图像本质、断层数据、密度单位✅并行进行3🟡 NeRF与3D Gaussian Splatting原理掌握点云/高斯场…

期刊分类计算机领域会议

该图片已上传图床,需要可自行下载: https://youke1.picui.cn/s1/2025/08/15/689f1e3553930.png 参考链接: 【干货】最全学术期刊级别分类讲解_哔哩哔哩_bilibili