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 14 MySQL
MySQL索引知识的一些小妙招总结
May 10 MySQL
正确使用MySQL INSERT INTO语句
May 26 MySQL
Mysql中调试存储过程最简单的方法
Jun 30 MySQL
mysql连接查询中and与where的区别浅析
Jul 01 MySQL
SQL注入篇学习之盲注/宽字节注入
Mar 03 MySQL
MySQL库表太大怎么办? 数据库分库分表项目实践
Apr 11 MySQL
MySQL创建管理KEY分区
Apr 13 MySQL
解决Mysql中的innoDB幻读问题
Apr 29 MySQL
解决Mysql报错 Table 'mysql.user' doesn't exist
May 06 MySQL
MySQL数据库简介与基本操作
May 30 MySQL
面试官问我Mysql的存储引擎了解多少
Aug 05 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
《超神学院》霸气归来, 天使彦上演维多利亚的秘密
2020/03/02 国漫
浅谈PHP调用Webservice思路及源码分享
2014/06/04 PHP
PHP使用header()输出图片缓存实例
2014/12/09 PHP
PHP实现的购物车类实例
2015/06/17 PHP
项目中应用Redis+Php的场景
2016/05/22 PHP
PHP+ajax实现二级联动菜单功能示例
2018/08/10 PHP
JavaScript中的getTimezoneOffset()方法使用详解
2015/06/10 Javascript
javascript函数式编程程序员的工具集
2015/10/11 Javascript
基于jquery插件编写countdown计时器
2016/06/12 Javascript
jQuery实现为LI列表前3行设置样式的方法【2种方法】
2016/09/04 Javascript
React教程之Props验证的具体用法(Props Validation)
2017/09/04 Javascript
Vue 仿QQ左滑删除组件功能
2018/03/12 Javascript
vue filters的使用详解
2018/06/11 Javascript
swiper在angularjs中使用循环轮播失效的解决方法
2018/09/27 Javascript
简单了解JavaScript中的执行上下文和堆栈
2019/06/24 Javascript
CountUp.js实现数字滚动增值效果
2019/10/17 Javascript
[00:43]DOTA2小紫本全民票选福利PA至宝全方位展示
2014/11/25 DOTA
Python扩展内置类型详解
2018/03/26 Python
Python多项式回归的实现方法
2019/03/11 Python
python版DDOS攻击脚本
2019/06/12 Python
python计算二维矩形IOU实例
2020/01/18 Python
TensorFlow tf.nn.conv2d_transpose是怎样实现反卷积的
2020/04/20 Python
django queryset相加和筛选教程
2020/05/18 Python
简单了解Python多态与属性运行原理
2020/06/15 Python
Python如何执行精确的浮点数运算
2020/07/31 Python
html5嵌入内容_动力节点Java学院整理
2017/07/07 HTML / CSS
英国地毯卖家:The Rug Seller
2019/07/18 全球购物
编写strcpy函数
2014/06/24 面试题
一个SQL面试题
2014/08/21 面试题
电工技术比武方案
2014/05/11 职场文书
开展批评与自我批评发言稿
2014/10/16 职场文书
股东大会通知
2015/04/24 职场文书
公司表扬信格式
2015/05/04 职场文书
2015年街道办事处团委工作总结
2015/10/14 职场文书
大学生志愿者心得体会
2016/01/15 职场文书
详解Python中的for循环
2022/04/30 Python