Mysql 字段类型JSON 解析

Mysql 字段类型JSON 解析

使用 json_extract JSON_TABLE

column JSON 是对象格式

json_extract

在MySQL中,你可以使用JSON_EXTRACT函数来提取JSON数据中的指定属性。

假设你有一个名为users的表,其中有一个data列存储了以下JSON数据:

{"name": "John Doe","age": 30,"email": "johndoe@example.com","address": {"street": "123 Main St","city": "New York","state": "NY"}
}

现在假设你想要从data列中提取name、age和email字段。以下是使用JSON_EXTRACT函数进行提取的示例查询:

SELECT JSON_EXTRACT(data, '$.name') AS name,JSON_EXTRACT(data, '$.age') AS age,JSON_EXTRACT(data, '$.email') AS email
FROM users;

在上述查询中,我们使用JSON_EXTRACT函数来从data列中提取指定属性。第一个参数是要提取的JSON数据,第二个参数是路径表达式’ . n a m e ′ 、 ′ .name'、' .name.age’和’$.email’,它们用于指定要提取的属性。

上述查询将返回以下结果集:

nameageemail
John Doe30johndoe@example.com

你可以根据你的实际数据结构和需求修改路径表达式和选择的属性。

请注意,以上示例只是使用MySQL的JSON_EXTRACT函数从JSON数据中提取属性的一个示例。根据你的具体情况和数据结构,你可能需要进行适当的修改和调整。

column JSON 是数组类型

json_extract

mysql解析json数组格式字段
在MySQL中,可以使用JSON函数来解析包含JSON数组的字段。

如果要查询名为data_field的表中的JSON数组字段array_column,并获取其中的元素值,可以按照以下步骤进行操作:

首先,确保已经安装了支持JSON类型的MySQL版本(5.7及更高)。

创建或选择相应的表,该表必须有一个列存储JSON数据。

使用SELECT语句从表中选择需要的列,同时使用JSON函数对JSON数组字段进行处理。

根据需求,可以使用不同的JSON函数来提取所需的信息。

以下是示例查询和输出结果:

-- 创建测试表
CREATE TABLE data_table (id INT PRIMARY KEY AUTO_INCREMENT, array_column JSON);-- 向表中插入示例数据
INSERT INTO data_table(array_column) VALUES ('[{"name": "John", "age": 20}, {"name": "Jane", "age": 25}]');-- 查询并解析JSON数组字段
SELECT id, json_extract(array_column, '$[*].name') AS names FROM data_table;

运行上述查询后,将会得到以下结果:
±—±---------+
| id | names |
±—±---------+
| 1 | [“John”,“Jane”] |
±—±---------+
这里我们使用了json_extract()函数来提取JSON数组中每个对象的"name"属性值,并返回一个新的JSON数组。

JSON_TABLE

当你有一个存储了JSON数组的列时,可以使用MySQL的JSON_TABLE函数将其解析为关系表格形式。

假设你有一个名为users的表,其中有一个data列存储了以下JSON数组数据:

[{"name": "John Doe","age": 30,"email": "johndoe@example.com","address": {"street": "123 Main St","city": "New York","state": "NY"}},{"name": "Jane Smith","age": 35,"email": "janesmith@example.com","address": {"street": "456 Elm St","city": "Los Angeles","state": "CA"}}
]

现在,假设你想要从data列中提取出name、age和email字段。以下是一个使用JSON_TABLE函数的示例查询:

SELECT jt.name,jt.age,jt.email
FROM users,JSON_TABLE(data, '$[*]' COLUMNS (name VARCHAR(50) PATH '$.name',age INT PATH '$.age',email VARCHAR(100) PATH '$.email')) AS jt;

在上述查询中,我们将data列解析为JSON数组,并使用JSON_TABLE函数进行处理。JSON_TABLE函数的第一个参数是要解析的JSON数组,第二个参数是路径表达式’$[*]',它用于选择所有的对象。然后,我们使用COLUMNS子句来定义要选择的属性和其对应的数据类型以及路径。

上述查询将返回以下结果集:

nameageemail
John Doe30johndoe@example.com
Jane Smith35janesmith@example.com

你可以根据你的实际数据结构和需求修改路径表达式和选择的属性。

请注意,以上示例只是使用MySQL的JSON_TABLE函数将JSON数组解析为关系表的一个示例。根据你的具体情况和数据结构,你可能需要根据需要进行适当的修改和调整。

JSON 数数组

['1111','222','333']
SELECT jt.code1 ,
FROM users,JSON_TABLE(data, '$[*]' JSON_TABLE(code, '$[*]' COLUMNS (code1 VARCHAR(50) PATH '$'))) AS jt;
code1
1111
2222

mysql 两个字段数组合并

如果你有两个字段存储了数组数据,并想将它们合并成一个数组,可以使用MySQL的JSON_ARRAY和JSON_ARRAYAGG函数来实现。

假设你有一个名为users的表,其中有两个字段field1和field2,它们都存储了数组数据。现在你想将这两个字段的数组合并成一个新的数组。

以下是一个示例查询,演示了如何将field1和field2字段的数组合并成一个新的数组:

SELECT JSON_ARRAYAGG(value) AS merged_array
FROM (SELECT value FROM users, JSON_TABLE(field1, '$[*]' COLUMNS (value VARCHAR(50) PATH '$')) jt1UNION ALLSELECT value FROM users, JSON_TABLE(field2, '$[*]' COLUMNS (value VARCHAR(50) PATH '$')) jt2
) AS subquery;

在上面的查询中,我们首先使用JSON_TABLE函数将field1和field2字段的数组数据解析为关系表格。然后我们使用UNION ALL将这两个表格合并起来。最后,我们使用JSON_ARRAYAGG函数来将合并后的值聚合为一个新的数组。结果将在merged_array列中返回。

请注意,上述查询使用了子查询来将UNION ALL操作应用于解析后的数组值。这是因为`

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/753667.shtml

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

相关文章

华为畅享 60X 用了这么久,说说真实感受

华为畅享 60X 上市也有1年了,为什么还要说这款手机,是因为用了这么久这款手机真的让人忍不住竖起大拇指!给父母准备的这款机子,在千元机里没得说! 华为畅享 60X 很适合中老年人用户,日常长辈们在用机时对手…

WPF —— ListBox控件、GroupBox控件详解

1、ListBox 介绍 ListBox 是一个 ItemsControl,这意味着它可以包含任何类型的对象的集合 (,例如字符串、图像或面板) 。 一个 ListBox 中的多个项是可见的,与仅 ComboBox具有所选项可见的项不同,除非 IsDropDownOpen 属性为 true。…

IUV-5G全网仿真软件实训手册-手工整理

全国职业院校技能大赛-5G组网与运维赛项-IUV全网实训指导手册资源-CSDN文库 引论 目前我国商用5G网络多为NSA组网架构,即核心网、承载网暂利旧当前4G网络,无线侧采用双连接EN-DC方式,NR站点以升级的4G站点为锚点,终端同时接入4G、5G无线网络。在蜂窝网络基础上,5G引入了…

SqlServer2008(R2)(二)SqlServer2008(R2)安装和卸载注意事项整理

二、注意事项 1、 安装数据中心版 说明:此激活版仅用于测试和学习使用。 这是官方的下载页面(需要付费订阅): http://msdn.microsoft.com/zh-cn/subscriptions/downloads/default.aspx 数据中心版: PTTFM-X467G-P7RH…

Linux如何使用touch命令一次性创建多个文件

使用touch命令可以方便地批量创建文件。以下是一些常用的方法: 1.使用循环创建多个文件 for i in {1..10}; do touch file_$i.txt; done 这条命令会创建10个文件,名称分别为file_1.txt、file_2.txt、...、file_10.txt。 2.使用brace expansion快速创建有规律的文件名 tou…

黑盒测试、白盒测试

🍅 视频学习:文末有免费的配套视频可观看 🍅 关注公众号:互联网杂货铺,回复1 ,免费获取软件测试全套资料,资料在手,涨薪更快 黑盒测试与白盒测试是软件测试中两种不同的测试方法&…

力扣模板题:检测字符串中数字是否递增

bool areNumbersAscending(char * s){//双指针操作&#xff0c;前指针保存前面一个数字字符int p0,q0;for(int i0;s[i];i){if(s[i]>0&&s[i]<9){pp*10s[i]-0;if(s[i1] ||s[i1]\0){//进行比较, 比较过后将p赋值q&#xff0c;q记录前面一个数字,因为数字均为小于100…

详解Python中的缩进和选择

缩进 Python最具特色的是用缩进来标明成块的代码。我下面以if选择结构来举例。if后面跟随条件&#xff0c;如果条件成立&#xff0c;则执行归属于if的一个代码块。 先看C语言的表达方式&#xff08;注意&#xff0c;这是C&#xff0c;不是Python!&#xff09; if ( i > 0 …

AI论文速读 | UniST:提示赋能通用模型用于城市时空预测

本文是时空领域的统一模型——UniST&#xff0c;无独有偶&#xff0c;时序有个统一模型新工作——UniTS&#xff0c;感兴趣的读者也可以阅读今天发布的另外一条。 论文标题&#xff1a;UniST: A Prompt-Empowered Universal Model for Urban Spatio-Temporal Prediction 作者&…

Go json Marshal UnMarshal 的一点小 trick

在编写 Web Service 等涉及数据序列化和反序列化的场景&#xff0c;对于 JSON 类型的数据&#xff0c;在 Go 中我们经常会使用到 encoding/json Package。最近微有所感&#xff0c;小水一篇 omitempty JSON 数据的 UnMarshal 我们经常会配合 Struct Tags 使用&#xff0c;让 …

2024.3.17 训练记录(19)

写一下下午校赛的部分题目 文章目录 ATC ABC150D Semi Common MultipleATC ABC144E GluttonyATC dp题单Q Flowers ATC ABC150D Semi Common Multiple 题目链接 下午不知道怎么糊出来的做法&#xff0c;可以转换成x一定要是a/2的奇数倍&#xff0c;所以输入a的时候先把都除以2…

CornerStone.js之点数据获取相关函数

向后端导出点的坐标数据&#xff1a;由于piexlData是Float32Arrat数据类型&#xff0c;传递给后端 会报错&#xff0c;于是将其转换为二维数组&#xff0c;然后传递给后端即可&#xff0c;后端将其写入txt文件中 二维数组表示是512*512的一个数组&#xff0c;元素值只有0和1

AI基础知识(3)--神经网络,支持向量机,贝叶斯分类器

1.什么是误差逆传播算法&#xff08;error BackPropagation&#xff0c;简称BP&#xff09;&#xff1f; 是一种神经网络学习算法。BP是一个迭代学习算法&#xff0c;在迭代的每一轮使用广义的感知机学习规则对参数进行更新估计。基于梯度下降&#xff08;gradient descent&am…

linux学习之Socket

目录 编写socket-udp 第一步&#xff0c;编写套接字 第二步&#xff0c;绑定端口号 第三步&#xff0c;启动服务器&#xff0c;读取数据 第四步&#xff0c;接收消息并发回信息给对方 编写socket-Tcp 第一步&#xff0c;编写套接字 第二步&#xff0c;绑定端口号 第三步…

等保测评的知识

结合自己所学的知识和网络上的一些知识做个小总结。 目录 一、概念&#xff1a; 二、等级划分&#xff1a; 三、技术要求&#xff1a; 四、管理要求&#xff1a; 五、等保测评实施过程&#xff1a; 六、典型的网络架构&#xff1a; 一、概念&#xff1a; 全称为信息安全等级保…

【涨薪技术】0到1学会性能测试 —— 参数化关联

前言 上一次推文我们分享了性能测试工作原理、事务、检查点&#xff01;今天给大家带来性能测试参数化&#xff0c;检查点知识&#xff01;后续文章都会系统分享干货&#xff0c;带大家从0到1学会性能测试&#xff0c;另外还有教程等同步资料&#xff0c;文末免费获取~ 01、性…

【基础】倒水 c++

描述 在一个桌子上摆放了n个杯子&#xff0c;每个杯子中有一定量的水。小A同学负责向杯子中倒水&#xff0c;他总共倒了k次&#xff0c;每次会向从第L个杯子到第R个杯子中添加P毫升的水&#xff08;注意&#xff1a;水只可能增加&#xff0c;不可能减少&#xff09;。 请问小A…

编译libkml-1.3.0报错:minizip/crypt.h:没有那个文件或目录

完整的报错信息如下&#xff1a;/root/libkml-1.3.0/src/kml/base/contrib/minizip/unzip.c:183:10: 致命错误&#xff1a;minizip/crypt.h&#xff1a;没有那个文件或目录 #include <minizip/crypt.h> ^~~~~~~~~~~~~~~~~ 编译中断。 原因分析:yum install m…

【R3F】13. 碰撞反馈 impulse

点击反馈 注册点击事件 import React, { useRef } from react import { Debug, Physics, RigidBody } from "@react-three/rapier" const cube = useRef() const cubeJump = () => {cube.current.applyImpulse({ x: 0, y: 2, z: 0 })cube.current.applyTorqueImpu…

c++希尔排序

希尔排序&#xff08;Shell Sort&#xff09;是一种插入排序的改进版本&#xff0c;它是非稳定排序算法。希尔排序的基本思想是将待排序的元素分成若干个小组&#xff0c;对每组进行插入排序&#xff0c;然后逐步减小增量&#xff0c;继续按组进行插入排序操作&#xff0c;直至…