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 Innodb关键特性之插入缓冲(insert buffer)
Apr 08 MySQL
详解MySQL 联合查询优化机制
May 10 MySQL
为什么MySQL分页用limit会越来越慢
Jul 25 MySQL
Prometheus 监控MySQL使用grafana展示
Aug 30 MySQL
MySQL约束超详解
Sep 04 MySQL
Mysql Innodb存储引擎之索引与算法
Feb 15 MySQL
MySQL学习之基础命令实操总结
Mar 19 MySQL
mysql查询结果实现多列拼接查询
Apr 03 MySQL
Golang连接并操作MySQL
Apr 14 MySQL
在MySQL中你成功的避开了所有索引
Apr 20 MySQL
MySQL 自动填充 create_time 和 update_time
May 20 MySQL
SQLServer常见数学函数梳理总结
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
php正则表达式验证(邮件地址、Url地址、电话号码、邮政编码)
2016/03/14 PHP
Yii2中设置与获取别名的函数(setAlias和getAlias)用法分析
2016/07/25 PHP
Laravel中的Blade模板引擎示例详解
2017/10/10 PHP
PHP工厂模式的日常使用
2019/03/20 PHP
PHP 范围解析操作符(::)用法分析【访问静态成员和类常量】
2020/04/14 PHP
比较全的JS checkbox全选、取消全选、删除功能代码
2008/12/19 Javascript
JS在IE和FireFox之间常用函数的区别小结
2010/03/12 Javascript
JavaScript面向对象知识串结(读JavaScript高级程序设计(第三版))
2012/07/17 Javascript
40个新鲜出炉的jQuery 插件和免费教程[上]
2012/07/24 Javascript
Javascript级联下拉菜单以及AJAX数据验证核心代码
2013/05/10 Javascript
JS常用字符串处理方法应用总结
2014/05/22 Javascript
5个JavaScript经典面试题
2014/10/13 Javascript
深入理解JavaScript系列(38):设计模式之职责链模式详解
2015/03/04 Javascript
JavaScript SHA512&SHA256加密算法详解
2015/08/11 Javascript
JavaScript实现弹窗效果代码分析
2017/03/09 Javascript
vue项目tween方法实现返回顶部的示例代码
2018/03/02 Javascript
原生js实现可兼容PC和移动端的拖动滑块功能详解【测试可用】
2019/08/15 Javascript
[45:46]2014 DOTA2国际邀请赛中国区预选赛5.21 HGT VS DT
2014/05/23 DOTA
Python字符串详细介绍
2015/05/09 Python
Python实现LRU算法的2种方法
2015/06/24 Python
Python爬虫之正则表达式基本用法实例分析
2018/08/08 Python
利用ctypes获取numpy数组的指针方法
2019/02/12 Python
Python多线程及其基本使用方法实例分析
2019/10/29 Python
阿迪达斯荷兰官方网站:adidas荷兰
2018/03/16 全球购物
美国快时尚彩妆品牌:Winky Lux(透明花瓣润唇膏)
2018/11/06 全球购物
大学生找工作推荐信范文
2013/11/28 职场文书
毕业自我鉴定怎么写
2014/03/25 职场文书
企业年会主持词
2014/03/27 职场文书
领导班子四风查摆对照检查材料思想汇报
2014/10/05 职场文书
幼儿园小班个人总结
2015/02/12 职场文书
2015年医德考评自我评价
2015/03/03 职场文书
2015年度服装销售工作总结
2015/03/31 职场文书
css3实现的加载动画效果
2021/04/07 HTML / CSS
理解深度学习之深度学习简介
2021/04/14 Python
使用redis实现延迟通知功能(Redis过期键通知)
2021/09/04 Redis
基于Python编写一个监控CPU的应用系统
2022/06/25 Python