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 22 MySQL
Mysql服务添加 iptables防火墙策略的方案
Apr 29 MySQL
详解mysql三值逻辑与NULL
May 19 MySQL
新手入门Mysql--概念
Jun 18 MySQL
MySQL系列之二 多实例配置
Jul 02 MySQL
MySQL一些常用高级SQL语句
Jul 03 MySQL
MySQL之select、distinct、limit的使用
Nov 11 MySQL
Mysql忘记密码解决方法
Feb 12 MySQL
Mysql Innodb存储引擎之索引与算法
Feb 15 MySQL
mysql字段为NULL索引是否会失效实例详解
May 30 MySQL
MySQL生成千万测试数据以及遇到的问题
Aug 05 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 事务处理数据实现代码
2010/05/13 PHP
PHP编码规范之注释和文件结构说明
2010/07/09 PHP
使用PHP实现二分查找算法代码分享
2011/06/24 PHP
php命令行(cli)下执行PHP脚本文件的相对路径的问题解决方法
2015/05/25 PHP
Yii2 加载css、js 载静态资源的方法
2017/03/10 PHP
php array_map()函数实例用法
2021/03/03 PHP
客户端限制只能上传jpg格式图片的js代码
2010/12/09 Javascript
回车直接实现点击某按钮的效果即触发单击事件
2014/02/27 Javascript
使用JavaScript开发IE浏览器本地插件实例
2015/02/18 Javascript
检测一个函数是否是JavaScript原生函数的小技巧
2015/03/13 Javascript
vue.js初学入门教程(2)
2016/11/07 Javascript
js封装tab标签页实例分享
2016/12/19 Javascript
jQuery正则验证注册页面经典实例
2017/06/10 jQuery
select标签设置默认选中的选项方法
2018/03/02 Javascript
基于Koa2写个脚手架模拟接口服务的方法
2018/11/27 Javascript
Vue 样式绑定的实现方法
2019/01/15 Javascript
vuex vue简单使用知识点总结
2019/08/29 Javascript
[03:55]2014DOTA2国际邀请赛 Fnatic经理采访赢DK在情理之中
2014/07/10 DOTA
Python程序中使用SQLAlchemy时出现乱码的解决方案
2015/04/24 Python
以视频爬取实例讲解Python爬虫神器Beautiful Soup用法
2016/01/20 Python
python @property的用法及含义全面解析
2018/02/01 Python
Python利用递归实现文件的复制方法
2018/10/27 Python
python创建文件时去掉非法字符的方法
2018/10/31 Python
如何基于python实现脚本加密
2019/12/28 Python
Python3 Click模块的使用方法详解
2020/02/12 Python
python print 格式化输出,动态指定长度的实现
2020/04/12 Python
django queryset相加和筛选教程
2020/05/18 Python
python中实现词云图的示例
2020/12/19 Python
基础的CSS3弹性盒Flexbox布局使用实例
2016/04/08 HTML / CSS
六查六看剖析材料
2014/02/15 职场文书
社会实践活动总结报告
2014/04/29 职场文书
银行求职信
2014/05/31 职场文书
董事长助理工作职责范本
2014/07/01 职场文书
委托书的写法
2014/09/16 职场文书
小学生差生评语
2014/12/29 职场文书
2015年乡镇安全生产工作总结
2015/05/19 职场文书