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创建高性能索引的全步骤
May 02 MySQL
MySQL EXPLAIN输出列的详细解释
May 12 MySQL
MySQL 聚合函数排序
Jul 16 MySQL
MySQL数据库10秒内插入百万条数据的实现
Nov 01 MySQL
MySQL创建定时任务
Jan 22 MySQL
面试提问mysql一张表到底能存多少数据
Mar 13 MySQL
MySQL 主从复制数据不一致的解决方法
Mar 18 MySQL
讲解MySQL增删改操作
May 06 MySQL
MySQL控制流函数(-if ,elseif,else,case...when)
Jul 07 MySQL
Mysql的Table doesn't exist问题及解决
Dec 24 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闭包(Closure)使用详解
2013/05/02 PHP
ThinkPHP框架实现的邮箱激活功能示例
2018/06/15 PHP
jQuery EasyUI中对表格进行编辑的实现代码
2010/06/10 Javascript
JS刷新框架外页面七种实现代码
2013/02/18 Javascript
jquery实现固定顶部导航效果(仿蘑菇街)
2013/03/21 Javascript
Javascript 中创建自定义对象的方法汇总
2014/12/04 Javascript
纯JavaScript实现的兼容各浏览器的添加和移除事件封装
2015/03/28 Javascript
jQuery实现左右切换焦点图
2015/04/03 Javascript
JS+CSS实现的竖向简洁折叠菜单效果代码
2015/10/22 Javascript
jQuery EasyUI 入门必看
2016/06/03 Javascript
smartupload实现文件上传时获取表单数据(推荐)
2016/12/12 Javascript
浅谈struts1 & jquery form 文件异步上传
2017/05/25 jQuery
基于input框覆盖掉数字英文的实例讲解
2017/07/21 Javascript
详解ionic本地相册、拍照、裁剪、上传(单图完全版)
2017/10/10 Javascript
什么是Vue.js框架 为什么选择它?
2017/10/17 Javascript
nodejs读取并去重excel文件
2018/04/22 NodeJs
jQuery实现输入框的放大和缩小功能示例
2018/07/21 jQuery
详解Vue This$Store总结
2018/12/17 Javascript
js实现json数组分组合并操作示例
2019/02/12 Javascript
JavaScript实现的联动菜单特效示例
2019/07/08 Javascript
[05:04]完美世界携手游戏风云打造 卡尔工作室地图界面篇
2013/04/23 DOTA
Python使用dis模块把Python反编译为字节码的用法详解
2016/06/14 Python
python2.7到3.x迁移指南
2018/02/01 Python
Python实现的网页截图功能【PyQt4与selenium组件】
2018/07/12 Python
Python中请不要再用re.compile了
2019/06/30 Python
查看Python依赖包及其版本号信息的方法
2019/08/13 Python
python turtle工具绘制四叶草的实例分享
2020/02/14 Python
Python3 利用face_recognition实现人脸识别的方法
2020/03/13 Python
Python趣味入门教程之循环语句while
2020/08/26 Python
巴塞罗那观光通票:Barcelona Pass
2019/10/30 全球购物
介绍一下Mysql的存储引擎
2015/02/12 面试题
办公室文员工作自我评价
2013/12/01 职场文书
农民工工资支付承诺函
2014/03/31 职场文书
邮政竞聘演讲稿
2014/09/03 职场文书
2015年度校学生会工作总结报告
2015/05/23 职场文书
Spring 使用注解开发
2022/05/20 Java/Android