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

查询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.lryc.cn/news/276597.html

相关文章:

  • Docker mysql 主从复制
  • 第7章-第1节-Java中的异常处理
  • 使用python生成一个月度账单消费金额柱状图表
  • 将一个独立的磁盘添加到已有的 `/` 分区
  • AI智能电销器人需要注意哪些问题呢
  • 呼叫中心研究分析:到2027年市场规模预计将达4966亿美元
  • 工业数据采集分析——工厂大脑 提升综合经济效益
  • python系列教程218——生成器表达式
  • jquery 实现简单的标签页效果
  • C++ Web框架Drogon初体验笔记
  • x-cmd pkg | busybox - 嵌入式 Linux 的瑞士军刀
  • Java异常简单介绍
  • ocrmypdf_pdf识别
  • 卷积神经网络|猫狗分类系列--导入kaggle猫狗数据集
  • 【linux 多线程并发】线程本地数据存储的两种方式,每个线程可以有同名全局私有数据,以及两种方式的性能分析
  • 2401d,d导入C的问题
  • SpringCloud GateWay实现路由限流
  • 打印日期c++
  • 数据结构入门到入土——链表(1)
  • MySQL C API的使用
  • JavaScript防御性编程
  • 微信预约小程序制作指南:从小白到专家
  • 向量数据库:Milvus
  • 亚马逊国际商品详情 API:获取特定商品详细信息的实践
  • MSB30M-ASEMI小贴片整流桥MSB30M
  • Redis启动方式
  • TEMU 新手小白必看!2024入驻流程/入驻类目/入驻资料等详细流程讲解
  • 【C语言】数组
  • 常见测试技术都有哪些?
  • Spring事务控制