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 Router的安装部署
Apr 24 MySQL
MySQL慢查询的坑
Apr 28 MySQL
详解MySQL主从复制及读写分离
May 07 MySQL
分析mysql中一条SQL查询语句是如何执行的
Jun 21 MySQL
MySQL深度分页(千万级数据量如何快速分页)
Jul 25 MySQL
Centos7中MySQL数据库使用mysqldump进行每日自动备份的编写
Aug 02 MySQL
Mysql中where与on的区别及何时使用详析
Aug 04 MySQL
SpringBoot连接MySQL获取数据写后端接口的操作方法
Nov 02 MySQL
navicat 连接Ubuntu虚拟机的mysql的操作方法
Apr 02 MySQL
在MySQL中你成功的避开了所有索引
Apr 20 MySQL
mysql 索引的数据结构为什么要采用B+树
Apr 26 MySQL
mysql 体系结构和存储引擎介绍
May 06 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
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
2017/12/21 PHP
laravel框架学习笔记之组件化开发实现方法
2020/02/01 PHP
js 图片缩放(按比例)控制代码
2009/05/27 Javascript
js中top、clientTop、scrollTop、offsetTop的区别 文字详细说明版
2011/01/08 Javascript
jQuery 源码分析笔记(6) jQuery.data
2011/06/08 Javascript
jQuery 三击事件实现代码
2013/09/11 Javascript
Javascript中innerHTML用法实例分析
2015/01/12 Javascript
JavaScript的new date等日期函数在safari中遇到的坑
2016/10/24 Javascript
微信小程序滚动Tab实现左右可滑动切换
2017/08/17 Javascript
基于Vue生产环境部署详解
2017/09/15 Javascript
jQuery实现火车票买票城市选择切换功能
2017/09/15 jQuery
webpack v4 从dev到prd的方法
2018/04/02 Javascript
vue中使用element-ui进行表单验证的实例代码
2018/06/22 Javascript
vue中使用微信公众号js-sdk踩坑记录
2019/03/29 Javascript
通过jQuery学习js类型判断的技巧
2019/05/27 jQuery
Vue中使用Lodop插件实现打印功能的简单方法
2019/12/19 Javascript
JavaScript布尔运算符原理使用解析
2020/05/06 Javascript
[01:11]steam端dota2实名认证操作流程视频
2021/03/11 DOTA
Python生成不重复随机值的方法
2015/05/11 Python
Python寻找两个有序数组的中位数实例详解
2018/12/05 Python
解决pycharm的Python console不能调试当前程序的问题
2019/01/20 Python
django重新生成数据库中的某张表方法
2019/08/28 Python
python cv2截取不规则区域图片实例
2019/12/21 Python
python中Django文件上传方法详解
2020/08/05 Python
在Python中实现字典反转案例
2020/12/05 Python
html5 Canvas画图教程(3)—canvas出现1像素线条模糊不清的原因
2013/01/09 HTML / CSS
html5中canvas图表实现柱状图的示例
2017/11/13 HTML / CSS
外企C语言笔试题
2013/11/10 面试题
自立自强的名人事例
2014/02/10 职场文书
人力资源总监工作说明
2014/03/03 职场文书
对孩子的寄语
2014/04/09 职场文书
2015年12.4全国法制宣传日活动总结
2015/03/24 职场文书
个人原因辞职信模板
2015/05/13 职场文书
收入证明申请书
2015/06/12 职场文书
2015年学校教研室主任工作总结
2015/07/20 职场文书
JavaScript 定时器详情
2021/11/11 Javascript