MySQL JSON_TABLE() 函数
JSON_TABLE()函数从一个指定的JSON文档中提取数据并返回一个具有指定列的关系表。
应用:数据库字段以JSON 存储后,实际应用需要对其中一个字段进行查询
语法
JSON_TABLE(json,path COLUMNS(column[,column[,...]]))column:name
参数
json必需的。一个 JSON 文档。path必需的。一个路径表达式。column必需的。定义一个列。您可以使用如下 4 中方式定义一个列:name FOR ORDINALITY: 生成一个从 1 开始的计数器列,名字为 name。
name type PATH string_path [on_empty] [on_error]: 将由路径表达式 string_path 指定的值放在名字为 name 的列中。
name type EXISTS PATH string_path:根据 string_path 指定的位置是否有值将 1 或 0 放在名字为 name 的列中。
NESTED [PATH] path COLUMNS (column[, column[, ...]]): 将内嵌的对象或者数组中的数据拉平放在一行中。
{NULL | ERROR | DEFAULT value} ON EMPTY可选的。如果指定了,它决定了指定路径下没有数据时的返回值:NULL ON EMPTY: 如果指定路径下没有数据,JSON_TABLE() 函数将使用 NULL,这是默认的行为。
DEFAULT value ON EMPTY: 如果指定路径下没有数据,JSON_TABLE() 函数将使用 value。
ERROR ON EMPTY: 如果指定路径下没有数据,JSON_TABLE() 函数将抛出一个错误。
{NULL | ERROR | DEFAULT value} ON ERROR可选的。如果指定了,它决定了处理错误的逻辑:NULL ON ERROR: 如果有错误,JSON_TABLE() 函数将使用 NULL,这是默认的行为。
DEFAULT value ON ERROR: 如果有错误,JSON_TABLE() 函数将使用 value。
ERROR ON ERROR: 如果有错误,JSON_TABLE() 函数将抛出一个错误。
返回值
MySQL JSON_TABLE() 函数从一个指定的 JSON 文档中提取数据并返回一个具有指定列的关系表。您可以像普通的表一样使用 JSON_TABLE() 返回的表。JSON_TABLE() 函数将在以下情况下返回错误:如果参数 json 不是有效的 JSON 文档,MySQL 将会给出错误。您可以使用 JSON_VALID() 验证 JSON 文档的有效性。
如果参数 path 不是有效的路径表达式, MySQL 将会给出错误。
实例:
数组分别取值
JSON 数组中有两个对象。路径表达式 $[*] 则表示数组中的每个元素。COLUMNS 子句定义了关系表中的 3 个列:id FOR ORDINALITY:
列名为 id,列的内容为从 1 开始的自增序列。
x varchar(255) PATH '$.x':
列名为 x,列的内容是对应了对象中的成员 x。
y INT PATH '$.y':
列名为 y,列的内容是对应了对象中的成员 y。
select * FROMJSON_TABLE('[{"x": "01", "y": 11}, {"x": "02", "y": 22}]','$[*]'COLUMNS (id FOR ORDINALITY,x varchar(255) PATH '$.x',y INT PATH '$.y')) AS t;
路径格式:
取所有元素: [ ∗ ] ,表示取所有元素;取指定单个元素: 如 ′ [*],表示取所有元素; 取指定单个元素: 如' [∗],表示取所有元素;取指定单个元素:如′[0]',表示取第一个元素; 取指定多个元素:
如 [ 0 , 2 , 4 ] ,表示取第一、三、五个元素;取范围连续元素:如 [0, 2, 4],表示取第一、三、五个元素; 取范围连续元素: 如 [0,2,4],表示取第一、三、五个元素;取范围连续元素:如[0 TO 2],表示取第一到第三个元素;
如果不指定元素,如$[],则会报错
直接取值
JSON 数组中有多个对象。
路径表达式 $[*] 则表示数组中的每个元素。
COLUMNS 子句定义了关系表中的 2 个列:
id FOR ORDINALITY: 列名为 id,列的内容为从 1 开始的自增序列。
x INT PATH ‘$’: 列名为 x,列的内容是对应了对象的值。
select * FROMJSON_TABLE('["1","11","111"]','$[*]'COLUMNS (id FOR ORDINALITY,x INT PATH '$')) AS t;
相关文章:

MySQL JSON_TABLE() 函数
JSON_TABLE()函数从一个指定的JSON文档中提取数据并返回一个具有指定列的关系表。 应用:数据库字段以JSON 存储后,实际应用需要对其中一个字段进行查询 语法 JSON_TABLE(json,path COLUMNS(column[,column[,...]]))column:name参数 json必需的。一个 …...

【MATLAB第80期】基于MATLAB的结构核岭回归SKRR多输入单输出回归预测及分类预测模型
【MATLAB第80期】基于MATLAB的结构核岭回归SKRR多输入单输出回归预测及分类预测模型 SKRR这是Gustau Camps-Valls等人在“用深度结构核回归检索物理参数”中提出的结构核岭回归(SKRR)方法。 参考文献: Camps-Valls,Retrieval of Physical Pa…...

Qt消息对话框的使用
本文介绍Qt消息对话框的使用。 QMessageBox类是Qt编程中常用到的一个类,主要用来进行一些简单的消息提示,比如:问题对话框,信息对话框等,这些对话框都属于QMessageBox类的静态方法,使用起来比较简单&#…...
spring的Ioc、DI以及Bean的理解
文章目录 什么是Ioc?Spring和这有什么关系Spring是怎么做的?如果service层对dao层有依赖该怎么办?什么叫做依赖注入Spring这样做的目的是什么参考文献 什么是Ioc? Ioc(Inversion of Control) 控制反转,就是使用对象时…...
倒计时 天时分秒
shijian() {const EndTIME new Date(开始时间变量); // 截止时间const NowTime new Date(); // 开始时间const usedTime EndTIME - NowTime; // 相差的毫秒数const days Math.floor(usedTime / (24 * 3600 * 1000)); // 计算出天数const leavel usedTime % (24 * 3600 * 1…...

Spring篇---第六篇
系列文章目录 文章目录 系列文章目录一、Spring 框架中的单例 Bean 是线程安全的么?二、Spring 是怎么解决循环依赖的?三、说说事务的隔离级别一、Spring 框架中的单例 Bean 是线程安全的么? Spring 框架并没有对单例 Bean 进行任何多线程的封装处理。 关于单例 Bean 的线程…...

【unity小技巧】适用于任何 2d 游戏的钥匙门系统和buff系统——UnityEvent的使用
文章目录 每篇一句前言开启配置门的开启动画代码调用,控制开启门动画 新增CollisionDetector 脚本,使用UnityEvent ,控制钥匙和门的绑定多把钥匙控制多个门一把钥匙控制多个门 BUFF系统扩展参考源码完结 每篇一句 人总是害怕去追求自己最重要…...

爬虫ip如何加入到代码里实现自动化数据抓取
以下是一个使用HTTP:Tiny和www.weibo.com的音频爬虫程序的示例。这个示例使用了https://www.duoip.cn/get_proxy来获取爬虫IP。请注意,这个示例可能需要根据你的实际需求进行调整。 #!/usr/bin/perluse strict; use warnings; use HTTP::Tiny; use LWP::UserAgent; …...

在win10上安装配置Hadoop的环境变量
一、背景 在windows10系统中运行seatunnel 二、安装部署 2.1. 下载 Hadoop包 从 Apache Hadoop 官网下载最新版本的 Hadoop,版本号保持与服务端的Hadoop版本一致。 https://hadoop.apache.org/releases.htmlIndex of /apache/hadoop/core/hadoop-3.2.3/ 2.2. 解…...

MAX插件CG Magic怎么云渲染?操作方法已整起!
小编这里会收到不少网友的反馈是关于3ds max插件CG Magic怎么云渲染? 3d max的这款插件CG MAGIC的出现就是为了设计师使用过程中,可以省时又省心的完成工作。 同时,大家要了键下,现阶段CG MAGIC有18个板块,118个模块…...

尝试使用jmeter-maven-plugin
前提准备 1、maven项目 2、已安装JMeter、Jenkins、maven、jdk 环境要求: jmeter>5.6.2 maven >3.9 jdk>1.8 Jenkins ? 备注:jmeter-maven-plugin 无需下载,可查阅相关地址:GitHub - jmeter-maven-plugin/jmete…...
navigator.userAgent.toLowerCase区分设备,浏览器
navigator.userAgent.toLowerCase区分设备,浏览器 navigator.userAgent.toLowerCase()区分设备是pc还是移动端在确认是移动端的基础上,判断是Android、ipad、iphone内置的浏览器,比如新浪微博、腾讯QQ(非QQ浏览器&…...
防火墙操作:开放端口ICMP时间戳请求漏洞修复
响应ICMP时间戳请求漏洞修复 firewall-cmd --permanent --zonepublic --add-icmp-blocktimestamp-reply firewall-cmd --permanent --zonepublic --add-icmp-blocktimestamp-request firewall-cmd --reload --防火墙状态 systemctl status firewalld --打开防火墙 systemctl …...

MySQL配置环境变量和启动登录
如果不配置环境变量,每次登录 MySQL 服务器时就必须进入到 MySQL 的 bin 目录下,也就是输入“cd C:\Program Files\MySQL\MySQL Server 5.7\bin”命令后,才能使用 MySQL 等其它命令工具,这样比较麻烦。配置环境变量以后就可以在任…...
救济金发放(The Dole Queue, UVa 133)rust解法
n(n<20)个人站成一圈,逆时针编号为1~n。有两个官员,A从1开始逆时针数,B从n开始顺时针数。在每一轮中,官员A数k个就停下来,官员B数m个就停下来(注意有可能两个官员停在同一个人上)…...
oracle实验四
创建文件 (1)为 ORCL 数据库创建一个名为 BOOKTBS1 的永久性表空间,数据文件为’d:\bt01.dbf’ ,大小为100M,区采用自动扩展方式(即自动分配), 段采用自动管理方式; &am…...
数据结构-堆排序Java实现
目录 一、引言二、算法步骤三、原理演示步骤1: 构建最大堆步骤2: 交换和堆化步骤3: 排序完成 四、代码实战五、结论 一、引言 堆排序是一种利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或…...

C#进阶——反射(Reflection)
定义:反射指的是在运行时动态地获取、检查和操作程序中的类型信息,而在我们的Unity中反射允许开发者在运行时通过代码来访问和修改对象的属性、方法和字段,而不需要提前知道这些成员的具体信息。 举一个例子,我们使用反射在运行的…...
Oracle 运维篇+应用容器数据库的install、upgrade、patch、uninstall
★ 知识点 ※ DEFAULT_SHARING参数的取值 METADATA: 元数据链接共享数据库对象的元数据,但其数据对于每个容器是唯一的。这些数据库对象被称为元数据链接的应用程序公共对象。此设置为默认设置。DATA: 数据链接共享数据库对象,其数据对于应用程序容器中…...

Affinity Publisher for Mac/Windows最新中文下载 排版神器
Affinity Publisher是一款专业的排版和设计软件,它可以帮助您从简单的文档到复杂的书籍和杂志轻松创建高质量的出版物。 该软件具有直观的界面和强大的功能,使您可以轻松组织和编辑文本、图像和数据,并创建令人惊叹的布局。 Affinity Publi…...

华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...

使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...

CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...