查询json数组

步骤一:创建表格
首先,我们需要创建一个表格来存储包含JSON对象数组的数据。可以使用以下代码创建一个名为 my_table 的表格:

CREATE TABLE my_table (id INT PRIMARY KEY AUTO_INCREMENT,json_data JSON
);

上述代码创建了一个包含两个列的表格,id 和 json_data。其中,json_data 列用于存储我们要查询的JSON数据。

步骤二:插入JSON数据
接下来,我们需要插入一些包含JSON对象数组的数据。可以使用以下代码插入一条数据:

INSERT INTO my_table (json_data) 
VALUES ('[{"name": "Alice", "age": 25}, {"name": "Bob", "age": 30}, {"name": "Charlie", "age": 35}]');

上述代码向 my_table 表格中插入了一个包含三个JSON对象的JSON数组。你可以根据需要插入更多的数据。

步骤三:查询包含特定条件的JSON对象数组
现在,我们已经准备好进行查询了。使用以下代码查询包含特定条件的JSON对象数组:

SELECT * FROM my_table
WHERE JSON_CONTAINS(json_data, '{"name": "Alice"}');

 上述代码使用JSON_CONTAINS函数查询包含 {"name": "Alice"} 条件的JSON对象数组。如果该条件存在于JSON数组中的任意一个对象中,则会返回匹配的记录。


更为复杂的场景 

有时候在开发比较简单的项目时,为了方便(偷懒)会将所有关联信息以json格式保存在主表里,在新增的时候是轻松了,不用插入多张表,但是在查询的时候如果对json格式掌握不足就会给自己挖坑

假设json字段inventor的内容为

 [{"name": "", "type": "1", "number": "30276207", "company": [103], "hasName": true, "employeeId": 1}, {"name": "", "type": "1", "number": "11725165", "company": [128], "hasName": true, "employeeId": 5}]

查询 employeeId=1 的数据

select * from biz_patent where JSON_CONTAINS(inventor, '{"employeeId": 1}');
select * from biz_patent where JSON_CONTAINS(inventor, CONCAT('{"employeeId": ', 3 , '}'));

查询 employeeId=1,并将所有人员姓名展示在一个字段中 的数据 

分解下, 1:使用JSON_EXTRACT函数来提取JSON对象数组中的字段所有值

SELECT JSON_UNQUOTE(JSON_EXTRACT(inventor, '$[*].employeeId')) AS names from biz_patent;

再用 FIND_IN_SET 查询

select a.id,a.patent_type,a.patent_name, 
(SELECT GROUP_CONCAT(DISTINCT name) FROM biz_employee WHERE FIND_IN_SET(id, REPLACE(TRIM(REGEXP_REPLACE(JSON_UNQUOTE(JSON_EXTRACT(a.inventor, '$[*].employeeId')), '\\[|\\]', '')) ,' ','')) ) as inventor,
a.patent_application_date
from biz_patent a
where JSON_CONTAINS(inventor, CONCAT('{"employeeId": ', 3 , '}'));

 

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

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

相关文章

SCADE—产品级安全关键系统的MBD开发套件

产品概述 随着新能源三电、智能驾驶等新技术的应用,汽车中衍生出很多安全关键零部件,如BMS、VCU、MCU、ADAS等,相应的软件在汽车中的比重越来越大,并且安全性、可靠性要求也越来越高。ANSYS主要针对安全关键零部件的嵌入式产品级软…

stable diffusion 基础教程-提示词之艺术风格用法

展现夕阳 golden hour, (rim lighting):1.2, warm tones, sun flare, soft shadows, vibrant colors, hazy glow, painterly effect, dreamy atmosphere阴影 chiaroscuro, (high contrast):1.2, dramatic shadows, bold highlights, moody atmosphere, captivating inte…

操作系统期末总结

操作系统期末总结 常见操作系统结构组织方式什么是原语,由什么构成,执行时有什么特点管程的相干概念(管程里的什么是不可见的,外部函数怎么调用完成的)死锁检测的实质是检测什么识别出与死锁有关的什么存储管理的主要任…

自动化测试知识总结

一、自动化测试概念 自动化测试是指一切把人为驱动的测试行为转换成机器程序去驱动测试的过程,小到可以通过脚本生成一些测试数据,大到根据测试用例生成测试脚本并驱动测试行为。 二、自动化测试优势 自动化测试在提升软件测试团队效率方面有很多优势…

【六大排序详解】终篇 :冒泡排序 与 快速排序

终篇 :冒泡排序 与 快速排序 1 冒泡排序1.1 冒泡排序原理1.2 排序步骤1.3 代码实现 2 快速排序2.1 快速排序原理2.1.1 Hoare版本代码实现 2.1.2 hole版本代码实现 2.1.3 前后指针法代码实现 2.1.4 注意取中位数局部优化 2.1.5 非递归版本非递归原理代码实现 2.2 特性总结 谢谢阅…

室内效果图没有质感?外国大神这6个实用技巧,带你轻松掌握!

为了创作出高级有质感的效果图,我们需要注意构图、颜色、布光等多种因素,以打造出逼真的渲染效果。不过不要担心!今天小编带来了国外知名设计师Arch Viz Artist在油管上分享的6个实用小技巧。看完带你轻松提升室内效果图的表现力!…

Vue2面试题:说一下$set的作用和原理?

作用: 对象: 响应式原理:通过触发setter实现更新 对象中后追加的属性、删除已有属性,Vue默认不做响应式处理 解决:this.$set() 数组: 响应式原理:调用重写的原生方法实现更新 数组中修改某下标的…

WPS/PPT插件-大珩助手免费功能更新-特殊字符

扩展特殊格式下特殊字符,增加200多个常用特殊字符,可直接点击插入。 PPT大珩助手 1.7.6 1、提供素材库功能,可实现一键保存素材,支持对选中的形状,支持一键替换素材,保留原素材的尺寸和位置,…

Redis使用场景(五)

Redis实战精讲-13小时彻底学会Redis 1.计数器 可以对 String 进行自增自减运算,从而实现计数器功能。 Redis 这种内存型数据库的读写性能非常高,很适合存储频繁读写的计数量。 2.缓存 将热点数据放到内存中,设置内存的最大使用量以及淘汰策略…

c++学习笔记-提高篇-STL-常用六大算法(遍历、查找、排序、拷贝和替换、算术生成、集合算法)

目录 概述 一、常用遍历算法 (1)for_each (2)transform 二、常用查找算法 (1)find (2)find_if (3)adjacent_find (4)binary…

RTT打印时间戳

官方的RTT VIEWER没有打印接收时间戳的功能,经过查找后发现可以有以下三种打印时间戳的方法。 第三方的RTT上位机ExtraPutty自己打印 第三方的RTT上位机 码云上有一个RTT_T2的仓库,基于python qt包写的画面,通过pylink来jlink通信。 优点…

Journal of King Saud University - Computer and Information Sciences投稿经验

期刊标签: 中科院二区 JCR Q1 影响因子:6.9 双盲审 个人认为还是很不错的期刊 开源期刊1350美元版面费 投稿经验 一共三个审稿人,一个建议小修后录取(list文章的贡献,添加一篇文章的引用), 另…

conda创建、查看、删除虚拟环境

在现代的Python开发中,使用虚拟环境已经成为了一种标准的做法。它可以帮助我们隔离不同的项目,使得每个项目都有自己独立的Python环境和依赖,从而避免各种依赖冲突。Conda是一个流行的包管理器和环境管理器,它可以帮助我们轻松地创…

Java八股文面试全套真题【含答案】-SQL优化篇

以下是关于Java八股文面试全套真题-SQL优化篇 你SQL优化这块有哪些技巧和方法,谈一谈? 以下是一些常用的SQL优化技巧: 使用索引:索引是提高SQL查询性能的最常见和有效的方法之一。通过创建适当的索引,可以加快查询的…

Nginx 负载均衡集群 节点健康检查

前言 正常情况下,nginx 做反向代理负载均衡的话,如果后端节点服务器宕掉的话,nginx 默认是不能把这台服务器踢出 upstream 负载集群的,所以还会有请求转发到后端的这台服务器上面,这样势必造成网站访问故障 注&#x…

Linux GDB 调试

文章目录 一、Qemu二、Gdbvscode 调试 三、RootFs 一、Qemu qemu 虚拟机 Linux内核学习 Linux 内核调试 一:概述 Linux 内核调试 二:ubuntu20.04安装qemu Linux 内核调试 三:《QEMU ARM guest support》翻译 Linux 内核调试 四:…

基于SSM框架和Layui框架的管理系统

计算机毕业设计:打造安全、高效的信息管理系统在这个数字化时代,信息安全和高效管理是至关重要的。为了帮助学校或机构更好地管理和保护信息,我们为您设计了一套功能强大的信息管理系统。该系统利用先进的技术,结合MD5加密&#x…

使用Go语言的HTTP客户端进行并发请求

Go语言是一种高性能、简洁的编程语言,它非常适合用于构建并发密集型的网络应用。在Go中,标准库提供了强大的HTTP客户端和服务器功能,使得并发HTTP请求变得简单而高效。 首先,让我们了解为什么需要并发HTTP请求。在许多应用场景中…

【Nacos专题】Nacos如何建立与应用服务之间的通信渠道?

作为Spring Cloud Alibaba微服务架构实战派上下册和RocketMQ消息中间件实战派上下册的作者胡弦。 Nacos是一款面向云原生服务的注册中心和配置中心技术解决方案,既然要与服务打交道,那么通信渠道是必不可少的组件,那么Nacos是如何建立与应用…

【后端已完成,前端更新ing】uniapp+springboot实现个人备忘录系统【前后端分离】

目录 (1)项目可行性分析 (一)技术可行性: (二)经济可行性: (三)社会可行性: (2)需求描述 功能模块图 用例图&#…