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时间设置注意事项的深入总结
May 06 MySQL
一看就懂的MySQL的聚簇索引及聚簇索引是如何长高的
May 25 MySQL
详解MySQL多版本并发控制机制(MVCC)源码
Jun 23 MySQL
解决mysql问题:由于找不到MSVCR120.dll,无法继续执行代码
Jun 26 MySQL
MySQL系列之十三 MySQL的复制
Jul 02 MySQL
MySQL8.0的WITH查询详情
Aug 30 MySQL
详细聊聊MySQL中慢SQL优化的方向
Aug 30 MySQL
为什么MySQL 删除表数据 磁盘空间还一直被占用
Oct 16 MySQL
MySQL对数据表已有表进行分区表的实现
Nov 01 MySQL
Mysql 8.x 创建用户以及授予权限的操作记录
Apr 18 MySQL
MySQL 原理与优化之Update 优化
Aug 14 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的类树(支持无限分类)
2006/10/09 PHP
php循环语句 for()与foreach()用法区别介绍
2012/09/05 PHP
Android ProgressBar进度条和ProgressDialog进度框的展示DEMO
2013/06/19 PHP
在JavaScript中通过URL传递汉字的方法
2007/04/09 Javascript
仿服务器端脚本方式的JS模板实现方法
2007/04/27 Javascript
js对象关系图 方便dom操作
2012/03/18 Javascript
xmlhttp缓存清除的2种解决方法
2013/12/13 Javascript
js实现select跳转功能代码
2014/10/22 Javascript
JS插件overlib用法实例详解
2015/12/26 Javascript
javascript基于原型链的继承及call和apply函数用法分析
2016/12/15 Javascript
基于jquery二维码生成插件qrcode
2017/01/07 Javascript
Django1.7+JQuery+Ajax验证用户注册集成小例子
2017/04/08 jQuery
angularjs中ng-bind-html的用法总结
2017/05/23 Javascript
详解vue项目的构建,打包,发布全过程
2017/11/23 Javascript
JS使用tween.js动画库实现轮播图并且有切换功能
2018/07/17 Javascript
基于nodejs的雪碧图制作工具的示例代码
2018/11/05 NodeJs
微信小程序使用map组件实现路线规划功能示例
2019/01/22 Javascript
vue 实现搜索的结果页面支持全选与取消全选功能
2019/05/10 Javascript
angular使用md5,CryptoJS des加密的方法
2019/06/03 Javascript
python实现爬虫下载漫画示例
2014/02/16 Python
Python中的两个内置模块介绍
2015/04/05 Python
Python自定义主从分布式架构实例分析
2016/09/19 Python
基于python(urlparse)模板的使用方法总结
2017/10/13 Python
Python模糊查询本地文件夹去除文件后缀的实例(7行代码)
2017/11/09 Python
pytorch cnn 识别手写的字实现自建图片数据
2018/05/20 Python
python 将大文件切分为多个小文件的实例
2019/01/14 Python
Pytorch对Himmelblau函数的优化详解
2020/02/29 Python
css3实例教程 一款纯css3实现的环形导航菜单
2014/10/20 HTML / CSS
Yves Rocher伊夫·黎雪美国官网:法国始创植物美肌1959
2019/01/09 全球购物
文秘自荐信
2013/10/20 职场文书
趣味游戏活动方案
2014/02/07 职场文书
语文教师个人工作总结
2015/02/06 职场文书
大学生就业推荐表自我评价
2015/03/02 职场文书
校园歌手大赛主持词
2015/07/03 职场文书
Nginx同一个域名配置多个项目的实现方法
2021/03/31 Servers
Python的flask接收前台的ajax的post数据和get数据的方法
2021/04/12 Python