MySQL JSON类型字段的查找与更新


MySQL 提供了丰富的函数用于 JSON 类型字段的查找与更新,详见官方文档。

创建一个表 t1,basic_info 字段为JSON类型:

CREATE TABLE `t1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `basic_info` json DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;


插入一条数据:

INSERT INTO `t1`(`id`, `basic_info`) 
VALUES (1, '{\"age\": 9, \"name\": \"小明\", \"class\": 3}');


一、检索 JSON:
1、查找 JSON 中的某个字段:

比如查询 id=1 的 basic_info 中的 name 字段,可以用以下两种方式:

select basic_info->'$.name' from t1 where id =1;
//或者
select JSON_EXTRACT(basic_info, '$.name') from t1 where id =1;


2、根据JSON中的某个字段查询表中记录:

比如查询name为小明的记录:

select * from t1 where basic_info->'$.name' = '小明'; 
//或者 
select * from t1 where JSON_EXTRACT(basic_info,'$.name') = '小明';


检索JSON数据的方法,文档:https://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html

二、修改 JSON

1、修改 JSON 中的某个字段:

比如我们修改 id =1 的 basic_info 中的age为 10 岁:

可以使用JSON_REPLACE() 或者 JSON_SET() 函数:

update t1 set basic_info = JSON_REPLACE(basic_info, '$.age', 10) where id =1; 
//或者 
update t1 set basic_info = JSON_SET(basic_info, '$.age', 10) where id =1;


2、往 JSON 中插入一个新的字段:

比如往 basic_info 中插入一个性别“gender”字段:

可以使用JSON_INSERT() 或者 JSON_SET() 函数:

update t1 set basic_info = JSON_INSERT(basic_info, '$.gender', '男') 
where id =1; 
//或者 
update t1 set basic_info = JSON_SET(basic_info, '$.gender', '男') 
where id =1;


SON_SET(),JSON_INSERT() 和JSON_REPLACE() 函数的区别:

JSON_SET() 支持替换现有值,并且支持添加不存在的值。

JSON_INSERT() 插入值而不替换现有值。

JSON_REPLACE() 仅替换现有值。
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
官网:http://www.tablego.cn   博客:https://blog.csdn.net/vipbooks      TableGo v6.0.0 版震撼发布,此次版本更新如下: 1、UI界面大改版,组件大调整,提升界面功能的可扩展性。 2、新增BeautyEye主题,界面更加清新美观,也可以通过配置切换到原生Java主题。 3、新增合并增量更新功能,并能指定代码中哪些代码块动态更新,哪些代码块不更新。 4、新增文件更新方式配置,可根据需要使用增量更新和覆盖更新。 5、新增保存全局参数和自定义文件的JSON参管理功能。 6、生成自定义文件新增JSON参数配置,可以灵活定义各种参数并能将代码直接生成到项目源码目录中去。 7、生成自定义文件新增是否生成单一文件配置和是否收集扩展信息配置。 8、生成自定义文件新增和调整了多个参数,使模板编写更加方便快捷。 9、生成数据库文档功能新增生成标题目录功能。 10、新增主要UI界面的界面大小配置功能,可根据需求在配置文件中调整UI界面大小。 11、新增友情捐赠界面,项目的发展离不开您的支持,无论捐赠金额多少都足够表达您对我的支持。 12、新增捐赠名单界面,所有捐赠者的捐赠信息和留言都会在这里展示,以此留名。 13、按字段生成JavaBean工具新增选择自定义模板功能。 14、新增MySQL关键字表名兼容性。 15、新增log4j2,TableGo的运行日志将在logs目录中输出,方便查找问题。 16、公共参数移除两个扩展参数配置,生成JavaBean功能移除用户模板配置。 17、新增TableGo官网:http://www.tablego.cn 18、新增数据信息界面,定时从官网更新数据,捐赠名单也自动从官网更新数据。 19、新增TableGo新版本提示功能,如果官网有新版本发布,客户端会有更新提醒。 20、性能优化并修复已知Bug。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值