MySql中的json_extract函数处理json字段详情


Posted in MySQL onJune 05, 2022

前言

在db中存储json格式的数据,相信大家都或多或少的使用过,那么在查询这个json结构中的数据时,有什么好的方法么?取出String之后再代码中进行解析?

接下来本文将介绍一下Mysql5.7+之后提供的json_extract函数,可以通过key查询value值

1. 使用方式

数据存储的数据是json字符串,类型为我们常用的varchar即可

语法:

JSON_EXTRACT(json_doc, path[, path] …)

若json字符串非数组时,可以通过$.字段名来表示查询对应的value

2. 使用演示

创建一个测试的表:

CREATE TABLE `json_table` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键id',
  `val` json DEFAULT NULL COMMENT 'json字符串',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

插入几条数据:

insert into `json_table` values (1, '{"name": "一灰灰blog", "age": 18}');
insert into `json_table` values (2, '{"name": "一灰灰blog", "site": "https://blog.hhui.top"}');

查询json串中的name如下:

mysql> select json_extract(`val`, '$.name') from `json_table`;
+-------------------------------+
| json_extract(`val`, '$.name') |
+-------------------------------+
| "一灰灰blog"                  |
| "一灰灰blog"                  |
+-------------------------------+

如果查询的key不在json串中,返回的是null,而不是抛异常

mysql> select json_extract(`val`, '$.name') as `name`, json_extract(`val`, '$.site') as `site` from `json_table`;
+-----------------+-------------------------+
| name            | site                    |
+-----------------+-------------------------+
| "一灰灰blog"    | NULL                    |
| "一灰灰blog"    | "https://blog.hhui.top" |
+-----------------+-------------------------+

接下来再看一下如果为json数组,怎么整

mysql> insert into `json_table` values (3, '[{"name": "一灰灰", "site": "https://spring.hhui.top"}]');
mysql> select json_extract(`val`, '$[0].name') from `json_table` where id = 3;
+----------------------------------+
| json_extract(`val`, '$[0].name') |
+----------------------------------+
| "一灰灰"                         |
+----------------------------------+

除了在查询结果中使用json_extract之外,也可以在查询条件中使用它

mysql> select * from `json_table` where json_extract(`val`, '$.name') = '一灰灰blog';
+----+------------------------------------------------------------+
| id | val                                                        |
+----+------------------------------------------------------------+
|  1 | {"age": 18, "name": "一灰灰blog"}                          |
|  2 | {"name": "一灰灰blog", "site": "https://blog.hhui.top"}    |
+----+------------------------------------------------------------+

3. 小结

json_extract函数的使用方法,用于解析字段内value为json串的场景

到此这篇关于MySql中的json_extract函数处理json字段详情的文章就介绍到这了,更多相关MySql 处理json 内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!


Tags in this post...

MySQL 相关文章推荐
MySQL入门命令之函数-单行函数-流程控制函数
Apr 05 MySQL
MySQL 慢查询日志深入理解
Apr 22 MySQL
MySQL 全文检索的使用示例
Jun 07 MySQL
mysql优化之query_cache_limit参数说明
Jul 01 MySQL
mysql中int(3)和int(10)的数值范围是否相同
Oct 16 MySQL
mysql 联合索引生效的条件及索引失效的条件
Nov 20 MySQL
mysql创建存储过程及函数详解
Dec 04 MySQL
MySQL常见优化方案汇总
Jan 18 MySQL
Mysql数据库事务的脏读幻读及不可重复读详解
May 30 MySQL
MySQL存储过程及语法详解
Aug 05 MySQL
MySQL索引失效十种场景与优化方案
May 08 MySQL
Mysql中@和@@符号的详细使用指南
Jun 05 #MySQL
MySQL中JOIN连接的基本用法实例
Jun 05 #MySQL
MySQL中order by的执行过程
MySQL 语句执行顺序举例解析
Jun 05 #MySQL
MySql数据库触发器使用教程
Jun 01 #MySQL
MySQL选择合适的备份策略和备份工具
MySQL普通表如何转换成分区表
May 30 #MySQL
You might like
php出现Cannot modify header information问题的解决方法大全
2008/04/09 PHP
Laravel5中防止XSS跨站攻击的方法
2016/10/10 PHP
PHP接口并发测试的方法(推荐)
2016/12/15 PHP
9个javascript语法高亮插件 推荐
2009/07/18 Javascript
jquery实现的元素的left增加N像素 鼠标移开会慢慢的移动到原来的位置
2010/03/21 Javascript
锋利的jQuery jQuery中的DOM操作
2010/03/21 Javascript
15个款优秀的 jQuery 图片特效插件推荐
2011/11/21 Javascript
关于jQuery中.attr()和.prop()的问题探讨
2013/09/06 Javascript
技术男用来对妹子表白的百度首页
2014/07/23 Javascript
JavaScript基础重点(必看)
2016/07/09 Javascript
Laydate时间组件在火狐浏览器下有多时间输入框时只能给第一个输入框赋值的解决方法
2016/08/18 Javascript
微信小程序 rpx 尺寸单位详细介绍
2016/10/13 Javascript
使用ionic在首页新闻中应用到的跑马灯效果的实现方法
2017/02/13 Javascript
react native 获取地理位置的方法示例
2018/08/28 Javascript
为vue项目自动设置请求状态的配置方法
2019/06/09 Javascript
Vue的Eslint配置文件eslintrc.js说明与规则介绍
2020/02/03 Javascript
解析Python中的__getitem__专有方法
2016/06/27 Python
Python中列表list以及list与数组array的相互转换实现方法
2017/09/22 Python
Django如何配置mysql数据库
2018/05/04 Python
django的聚合函数和aggregate、annotate方法使用详解
2019/07/23 Python
Numpy中对向量、矩阵的使用详解
2019/10/29 Python
Python操作Excel把数据分给sheet
2020/05/20 Python
python 解决mysql where in 对列表(list,,array)问题
2020/06/06 Python
python logging模块的使用详解
2020/10/23 Python
JD Sports芬兰:英国领先的运动鞋和运动服饰零售商
2018/11/16 全球购物
请说出你所知道的线程同步的方法
2013/04/19 面试题
说一下mysql, oracle等常见数据库的分页实现方案
2012/09/29 面试题
外企求职信范文分享
2013/12/31 职场文书
集体婚礼证婚词
2014/01/13 职场文书
诉讼代理人授权委托书
2014/04/08 职场文书
求职信名称怎么写
2014/05/26 职场文书
社区戒毒工作方案
2014/06/04 职场文书
违规违纪检讨书范文
2015/05/06 职场文书
认识实习感想
2015/08/10 职场文书
MySQL 如何分析查询性能
2021/05/12 MySQL
Python 详解通过Scrapy框架实现爬取百度新冠疫情数据流程
2021/11/11 Python