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 相关文章推荐
如何使用Maxwell实时同步mysql数据
Apr 08 MySQL
MySQL连接查询你真的学会了吗?
Jun 02 MySQL
浅谈MySQL之浅入深出页原理
Jun 23 MySQL
mysql连接查询中and与where的区别浅析
Jul 01 MySQL
解决mysql的int型主键自增问题
Jul 15 MySQL
Mysql外键约束的创建与删除的使用
Mar 03 MySQL
MySQL表锁、行锁、排它锁及共享锁的使用详解
Apr 02 MySQL
MySQL 条件查询的常用操作
Apr 28 MySQL
讲解MySQL增删改操作
May 06 MySQL
mysql如何查询连续记录
May 11 MySQL
前端传参数进行Mybatis调用mysql存储过程执行返回值详解
Aug 14 MySQL
MySQL 原理与优化之Limit 查询优化
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
再说下636单管机
2021/03/02 无线电
mysql数据库差异比较的PHP代码
2012/02/05 PHP
win7下memCache的安装过程(具体操作步骤)
2013/06/28 PHP
用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤
2014/01/19 PHP
关于php支持分块与断点续传文件下载功能代码
2014/05/09 PHP
PHP使用DirectoryIterator显示下拉文件列表的方法
2015/03/13 PHP
PHP简单实现DES加密解密的方法
2016/07/12 PHP
jquery ajax同步异步的执行最终解决方案
2013/04/26 Javascript
js获取元素到文档区域document的(横向、纵向)坐标的两种方法
2013/05/17 Javascript
顶部缓冲下拉菜单导航特效的JS代码
2013/08/27 Javascript
JS测试显示屏分辨率以及屏幕尺寸的方法
2013/11/22 Javascript
JavaScript验证电子邮箱的函数
2014/08/22 Javascript
详细介绍jQuery.outerWidth() 函数具体用法
2015/07/20 Javascript
JavaScript实现显示函数调用堆栈的方法
2016/04/21 Javascript
jQuery弹出层插件popShow(改进版)用法示例
2017/01/23 Javascript
node.js爬虫爬取拉勾网职位信息
2017/03/14 Javascript
你点的 ES6一些小技巧,请查收
2018/04/25 Javascript
node.js的http.createServer过程深入解析
2019/06/06 Javascript
Vuex modules模式下mapState/mapMutations的操作实例
2019/10/17 Javascript
非常漂亮的js烟花效果
2020/03/10 Javascript
如何使用JavaScript实现无缝滚动自动播放轮播图效果
2020/08/20 Javascript
[01:38:19]夜魇凡尔赛茶话会 第五期
2021/03/11 DOTA
python实现矩阵和array数组之间的转换
2019/11/29 Python
解决pyCharm中 module 调用失败的问题
2020/02/12 Python
HTML5标签大全
2016/11/23 HTML / CSS
阿迪达斯俄罗斯官方商城:adidas俄罗斯
2017/03/08 全球购物
任意存:BOXFUL
2018/05/21 全球购物
Linux中如何用命令创建目录
2016/12/02 面试题
给领导的致歉信范文
2014/01/13 职场文书
县优秀教师事迹材料
2014/01/31 职场文书
环境整治工作方案
2014/05/18 职场文书
个人求职自荐信范文
2014/06/20 职场文书
社区党支部承诺书
2015/04/29 职场文书
新闻稿怎么写
2015/07/18 职场文书
个人工作总结怎么写?
2019/04/09 职场文书
Python初识逻辑与if语句及用法大全
2021/08/07 Python