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服务添加 iptables防火墙策略的方案
Apr 29 MySQL
MySQL的join buffer原理
Apr 29 MySQL
MySQL sql_mode的使用详解
May 08 MySQL
MySQL 如何分析查询性能
May 12 MySQL
MySQL query_cache_type 参数与使用详解
Jul 01 MySQL
mysql事务对效率的影响分析总结
Oct 24 MySQL
如何避免mysql启动时错误及sock文件作用分析
Jan 22 MySQL
Mysql Innodb存储引擎之索引与算法
Feb 15 MySQL
聊聊mysql都有哪几种分区方式
Apr 13 MySQL
MySQL慢查询中的commit慢和binlog中慢事务的区别
Jun 16 MySQL
MySQL的意向共享锁、意向排它锁和死锁
Jul 15 MySQL
mysql序号rownum行号实现方式
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
千呼万唤始出来,DOTA2勇士令状不朽宝藏Ⅱ现已推出
2020/08/25 DOTA
Function eregi is deprecated (解决方法)
2013/06/21 PHP
PHP文件下载实例代码浅析
2016/08/17 PHP
PHP实现的基于单向链表解决约瑟夫环问题示例
2017/09/30 PHP
document对象execCommand的command参数介绍
2006/08/01 Javascript
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/02/09 Javascript
JavaScript 克隆数组最简单的方法
2009/02/12 Javascript
js Event对象的5种坐标
2011/09/12 Javascript
一个简单的弹性返回顶部JS代码实现介绍
2013/06/09 Javascript
jquery弹出框的用法示例(一)
2013/08/26 Javascript
JS嵌套函数调用上下文的问题解决
2014/03/26 Javascript
js打开windows上的可执行文件示例
2014/05/27 Javascript
jQuery中even选择器的定义和用法
2014/12/23 Javascript
JavaScript取得键盘按下方向键是哪个的方法
2015/08/04 Javascript
javascript同步服务器时间和同步倒计时小技巧
2015/09/24 Javascript
Uploadify上传文件方法
2016/03/16 Javascript
基于React实现表单数据的添加和删除详解
2017/03/14 Javascript
Node.js编写CLI的实例详解
2017/05/17 Javascript
JS仿淘宝搜索框用户输入事件的实现
2017/06/19 Javascript
JS实现unicode和UTF-8之间的互相转换互转
2017/07/05 Javascript
JavaScript封闭函数及常用内置对象示例
2019/05/13 Javascript
weui上传多图片,压缩,base64编码的示例代码
2020/06/22 Javascript
在HTML中使用JavaScript的两种方法
2020/12/24 Javascript
[04:11]DOTA2上海特级锦标赛主赛事首日TOP10
2016/03/03 DOTA
python opencv之分水岭算法示例
2018/02/24 Python
Windows下将Python文件打包成.EXE可执行文件的方法
2018/08/03 Python
500行代码使用python写个微信小游戏飞机大战游戏
2019/10/16 Python
Python调用.net动态库实现过程解析
2020/06/05 Python
HTML5响应式(自适应)网页设计的实现
2017/11/17 HTML / CSS
Origins悦木之源香港官网:雅诗兰黛集团高端植物护肤品牌
2018/03/21 全球购物
装修施工安全责任书
2014/07/24 职场文书
保研专家推荐信范文
2015/03/25 职场文书
纪念建国70周年演讲稿
2019/07/19 职场文书
24句精辟的现实社会语录,句句扎心,道尽人性
2019/08/29 职场文书
「地球外少年少女」BD发售宣传CM公开
2022/03/21 日漫
Win11开始菜单添加休眠选项
2022/04/19 数码科技