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 12 MySQL
QT连接MYSQL数据库的详细步骤
Jul 07 MySQL
MySQL图形化管理工具Navicat安装步骤
Dec 04 MySQL
MySQL为数据表建立索引的原则详解
Mar 03 MySQL
MySQL表锁、行锁、排它锁及共享锁的使用详解
Apr 02 MySQL
MySQL磁盘碎片整理实例演示
Apr 03 MySQL
MySQL创建管理RANGE分区
Apr 13 MySQL
MySQL数据库中的锁、解锁以及删除事务
May 06 MySQL
jdbc中自带MySQL 连接池实践示例
Jul 23 MySQL
前端传参数进行Mybatis调用mysql存储过程执行返回值详解
Aug 14 MySQL
MySQL使用IF语句及用case语句对条件并结果进行判断 
Sep 23 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产生随机数的两种方法实例代码 输出随机IP
2011/04/08 PHP
php session_start()出错原因分析及解决方法
2013/10/28 PHP
thinkphp浏览历史功能实现方法
2014/10/29 PHP
php将数组转换成csv格式文件输出的方法
2015/03/14 PHP
php实现购物车产品删除功能(2)
2020/07/23 PHP
Linux下 php7安装redis的方法
2018/11/01 PHP
怎么让脚本或里面的函数在所有图片都载入完毕的时候执行
2006/10/17 Javascript
JavaScript与C# Windows应用程序交互方法
2007/06/29 Javascript
让GoogleCode的SVN下的HTML文件在FireFox下正常显示.
2009/05/25 Javascript
JQuery UI皮肤定制
2009/07/27 Javascript
js判断一个元素是否为另一个元素的子元素的代码
2012/03/21 Javascript
仿当当网淘宝网等主流电子商务网站商品分类导航菜单
2013/09/25 Javascript
js形成页面的一种遮罩效果实例代码
2014/01/04 Javascript
JavaScript的21条基本知识点
2014/03/04 Javascript
使用百度地图api实现根据地址查询经纬度
2014/12/11 Javascript
使用JS获取当前地理位置方法汇总
2014/12/18 Javascript
js兼容火狐显示上传图片预览效果的方法
2015/05/21 Javascript
微信小程序-消息提示框实例
2016/11/24 Javascript
JS对象深度克隆实例分析
2017/03/16 Javascript
详解Koa中更方便简单发送响应的方式
2018/07/20 Javascript
微信小程序使用npm支持踩坑
2018/11/07 Javascript
vue学习笔记之slot插槽基本用法实例分析
2020/02/01 Javascript
javascript如何使用函数random来实现课堂随机点名方法详解
2020/07/28 Javascript
[57:50]DOTA2上海特级锦标赛主赛事日 - 4 胜者组决赛Secret VS Liquid第二局
2016/03/05 DOTA
OpenCV-Python实现轮廓检测实例分析
2018/01/05 Python
python3.x实现发送邮件功能
2018/05/22 Python
使用Django简单编写一个XSS平台的方法步骤
2019/03/25 Python
详解Python连接MySQL数据库的多种方式
2019/04/16 Python
Python Gluon参数和模块命名操作教程
2019/12/18 Python
解决torch.autograd.backward中的参数问题
2020/01/07 Python
Python实现列表索引批量删除的5种方法
2020/11/16 Python
师范学院毕业生求职信范文
2013/12/26 职场文书
法人身份证明书
2015/06/18 职场文书
律师催款函范文
2015/06/24 职场文书
党员理论学习心得体会
2016/01/21 职场文书
python爬取企查查企业信息之selenium自动模拟登录企查查
2021/04/08 Python