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 06 MySQL
MySQL8.0.24版本Release Note的一些改进点
Apr 22 MySQL
Mysql文件存储图文详解
Jun 01 MySQL
详细谈谈MYSQL中的COLLATE是什么
Jun 11 MySQL
详解MySQL中的pid与socket
Jun 15 MySQL
解决mysql问题:由于找不到MSVCR120.dll,无法继续执行代码
Jun 26 MySQL
MySQL系列之十四 MySQL的高可用实现
Jul 02 MySQL
MySQL视图概念以及相关应用
Apr 19 MySQL
MYSQL如何查看操作日志详解
May 30 MySQL
MySql中的json_extract函数处理json字段详情
Jun 05 MySQL
MySQL示例讲解数据库约束以及表的设计
Jun 16 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
re0第二季蕾姆被制作组打入冷宫!艾米莉亚女主扶正,原因唏嘘
2020/04/02 日漫
php 计划任务 检测用户连接状态
2012/03/29 PHP
php class类的用法详细总结
2013/10/17 PHP
php计算两个日期时间差(返回年、月、日)
2014/06/19 PHP
支持中文的PHP按字符串长度分割成数组代码
2015/05/17 PHP
thinkPHP实现将excel导入到数据库中的方法
2016/04/22 PHP
javascript for循环设法提高性能
2010/02/24 Javascript
Javascript中的变量使用说明
2010/05/18 Javascript
window.location.hash 使用说明
2010/11/08 Javascript
循环 vs 递归浅谈
2013/02/28 Javascript
JavaScript代码复用模式详解
2014/11/07 Javascript
jQuery实现两款有动画功能的导航菜单代码
2015/09/16 Javascript
AngularJS 避繁就简的路由
2016/07/01 Javascript
AngularJs 国际化(I18n/L10n)详解
2016/09/01 Javascript
浅谈JavaScript事件绑定的常用方法及其优缺点分析
2016/11/01 Javascript
深入理解javascript函数参数与闭包
2016/12/12 Javascript
浅谈JS验证表单文本域输入空格的问题
2017/02/14 Javascript
详解基于 axios 的 Vue 项目 http 请求优化
2017/09/04 Javascript
详解Webpack + ES6 最新环境搭建与配置
2018/06/04 Javascript
JavaScript 扩展运算符用法实例小结【基于ES6】
2019/06/17 Javascript
js最全的数组的降维5种办法(小结)
2020/04/28 Javascript
Python文件夹与文件的操作实现代码
2014/07/13 Python
Python3实现爬取简书首页文章标题和文章链接的方法【测试可用】
2018/12/11 Python
详解Python网络框架Django和Scrapy安装指南
2019/04/01 Python
jupyter notebook 中输出pyecharts图实例
2020/04/23 Python
Python3 ffmpeg视频转换工具使用方法解析
2020/08/10 Python
golang/python实现归并排序实例代码
2020/08/30 Python
Python本地及虚拟解释器配置过程解析
2020/10/13 Python
基于canvas使用贝塞尔曲线平滑拟合折线段的方法
2018/01/10 HTML / CSS
澳大利亚宠物商店:Petbarn
2017/11/18 全球购物
菲律宾优惠券网站:MetroDeal
2019/04/12 全球购物
策划主管的工作职责
2013/11/24 职场文书
劳模先进事迹材料
2014/12/24 职场文书
党员干部学习三严三实心得体会
2016/01/05 职场文书
电力安全教育培训心得体会
2016/01/11 职场文书
前端学习——JavaScript原生实现购物车案例
2021/03/31 Javascript