MySQL:json字段查询:数组、对象、成员检查

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
RDS MySQL DuckDB 分析主实例,集群系列 8核16GB
简介: MySQL:json字段查询:数组、对象、成员检查

环境准备

mysql版本


mysql> select version();

+-----------+

| version() |

+-----------+

| 8.0.29    |

+-----------+

1 row in set (0.00 sec)


建表


CREATE TABLE `tb_book` (

 `id` int primary key AUTO_INCREMENT COMMENT '主键id',

 `title` varchar(20) not null COMMENT '书名',

 `persons` json not null COMMENT '主要人物列表',

 `attrs` json not null COMMENT '属性列表',

 `info` json not null COMMENT '详细信息'

) ENGINE=InnoDB COMMENT='图书表';


测试数据


insert into tb_book (title, persons, attrs, info) values (

'红楼梦',

'["贾宝玉", "林黛玉"]',

'[{"label": "朝代", "value": "清代"}]',

'{"author": "曹雪芹"}'

);


insert into tb_book (title, persons, attrs, info) values (

'水浒传',

'["宋江", "李逵"]',

'[{"label": "朝代", "value": "宋代"}]',

'{"author": "施耐庵"}'

);


insert into tb_book (title, persons, attrs, info) values (

'三国演义',

'["曹操", "孙权", "刘备"]',

'[{"label": "朝代", "value": "汉代"}]',

'{"author": "罗贯中"}'

);


insert into tb_book (title, persons, attrs, info) values (

'西游记',

'["孙悟空", "唐僧", "猪八戒", "沙悟净"]',

'[{"label": "朝代", "value": "明代"}]',

'{"author": "吴承恩"}'

);



查看测试数据


mysql> select * from tb_book;

+----+--------------+--------------+---------+-----------+

| id | title  | persons  | attrs  | info  |

+----+--------------+--------------+---------+-----------+

|  1 | 红楼梦  | ["贾宝玉", "林黛玉"]| [{"label": "朝代", "value": "清代"}]| {"author": "曹雪芹"}|

|  2 | 水浒传  | ["宋江", "李逵"]| [{"label": "朝代", "value": "宋代"}]| {"author": "施耐庵"}|

|  3 | 三国演义| ["曹操", "孙权", "刘备"] | [{"label": "朝代", "value": "汉代"}]| {"author": "罗贯中"}|

|  4 | 西游记  | ["孙悟空", "唐僧", "猪八戒", "沙悟净"]| [{"label": "朝代", "value": "明代"}] | {"author": "吴承恩"}|

+----+--------------+--------------+---------+-----------+


查询示例

对象查询


mysql> select id, title, info  from tb_book where info->'$.author' ='吴承恩';


# 或者

mysql> select id, title, info  from tb_book where JSON_EXTRACT(info, '$.author') ='吴承恩';


+----+-----------+-------------------------+

| id | title     | info                    |

+----+-----------+-------------------------+

|  4 | 西游记    | {"author": "吴承恩"}    |

+----+-----------+-------------------------+

1 row in set (0.00 sec)



普通列表查询


mysql> select id, title, persons from tb_book where '宋江' MEMBER OF(persons);

+----+-----------+----------------------+

| id | title     | persons              |

+----+-----------+----------------------+

|  2 | 水浒传    | ["宋江", "李逵"]     |

+----+-----------+----------------------+

1 row in set (0.00 sec)


对象列表查询


mysql> select id, title, attrs from tb_book where JSON_CONTAINS(attrs, JSON_OBJECT('value', '汉代'));

+----+--------------+------------------------------------------+

| id | title        | attrs                                    |

+----+--------------+------------------------------------------+

|  3 | 三国演义     | [{"label": "朝代", "value": "汉代"}]     |

+----+--------------+------------------------------------------+

1 row in set (0.00 sec)



参考

MySQL:JSON字段List成员检查

mysql json类型数据查询

————————————————

版权声明:本文为CSDN博主「彭世瑜」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/mouday/article/details/130812547

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
6月前
|
关系型数据库 MySQL
MySQL数据表添加字段(三种方式)
本文解析了数据表的基本概念及字段添加方法。在数据表中,字段是纵向列结构,记录为横向行数据。MySQL通过`ALTER TABLE`指令支持三种字段添加方式:1) 末尾追加字段,直接使用`ADD`语句;2) 首列插入字段,通过`FIRST`关键字实现;3) 指定位置插入字段,利用`AFTER`指定目标字段。文内结合`student`表实例详细演示了每种方法的操作步骤与结构验证,便于理解与实践。
|
分布式计算 关系型数据库 MySQL
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型 图像处理 光通信 分布式计算 算法语言 信息技术 计算机应用
261 8
|
关系型数据库 MySQL 索引
MySQL的group by与count(), *字段使用问题
正确使用 `GROUP BY`和 `COUNT()`函数是进行数据聚合查询的基础。通过理解它们的用法和常见问题,可以有效避免查询错误和性能问题。无论是在单列分组、多列分组还是结合其他聚合函数的场景中,掌握这些技巧和注意事项都能大大提升数据查询和分析的效率。
1072 0
|
JSON 关系型数据库 MySQL
MySQL JSON数据存储结构与操作
通过本文的介绍,我们了解了MySQL中JSON数据类型的基本操作、常用JSON函数、以及如何通过索引和优化来提高查询性能。JSON数据类型为存储和操作结构化数据提供了灵活性和便利性,在现代数据库应用中具有广泛的应用前景。希望本文对您在MySQL中使用JSON数据类型有所帮助。
1223 0
|
关系型数据库 MySQL Java
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型
261 0
|
SQL 存储 关系型数据库
MySQL新增字段/索引会不会锁表?
MySQL新增字段/索引会不会锁表?
1285 0
|
SQL 关系型数据库 MySQL
MySQL 查询某个字段含有字母数字的值
MySQL 查询某个字段含有字母数字的值
352 0
|
JSON 前端开发 JavaScript
MySQL 8.0 可以操作 JSON 了,牛逼。。。
MySQL 8.0 可以操作 JSON 了,牛逼。。。
367 0
|
JSON 前端开发 JavaScript
MySQL 8.0 可以操作 JSON 了,牛逼。。。
简单概述 不允许为null; Json格式定义与LONGBLOB or LONGTEXT类似; 它的最大长度是受到max_allowed_packet所控制的; 查看JSON字段所占用空间大小的函数时JSON_STORAGE_SIZE(xxx); 除普通的Json操作,额外支持GeoJSON (基于几何图形的针对地理空间数据交换格式)一些相关操作; 对Json栏位支持索引(结合Mysql8.0新特性,函数index); 一个可以支持部分的,原地更新Json Column 的可选优化项加入MySql8.0; 可以使用的函数有JSON_SET(), JSON_REPLACE() ,JSON_RE
917 0
|
2月前
|
JSON API 数据格式
淘宝拍立淘按图搜索API系列,json数据返回
淘宝拍立淘按图搜索API系列通过图像识别技术实现商品搜索功能,调用后返回的JSON数据包含商品标题、图片链接、价格、销量、相似度评分等核心字段,支持分页和详细商品信息展示。以下是该API接口返回的JSON数据示例及详细解析:

推荐镜像

更多