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 25 MySQL
MySQL实例精讲单行函数以及字符数学日期流程控制
Oct 15 MySQL
MySQL数据库10秒内插入百万条数据的实现
Nov 01 MySQL
MySQL磁盘碎片整理实例演示
Apr 03 MySQL
Mysql排查分析慢sql之explain实战案例
Apr 19 MySQL
解决MySQL报“too many connections“错误
Apr 19 MySQL
Mysql 文件配置解析介绍
May 06 MySQL
MySQL查询日期时间
May 15 MySQL
MySQL运行报错:“Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre”解决方法
Jun 14 MySQL
MySQL主从切换的超详细步骤
Jun 28 MySQL
SQL Server数据库的三种创建方法汇总
May 08 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
配置支持SSI
2006/11/25 PHP
可以在线执行PHP代码包装修正版
2008/03/15 PHP
详谈symfony window下的安装 安装时候出现的问题以及解决方法
2017/09/28 PHP
超酷的网页音乐播放器DewPlayer使用方法
2010/12/18 Javascript
javascript中xml操作实现代码
2011/11/21 Javascript
重写javascript中window.confirm的行为
2012/10/21 Javascript
利用javascript数组长度循环数组内所有元素
2013/12/27 Javascript
jQuery progressbar通过Ajax请求实现后台进度实时功能
2016/10/11 Javascript
bootstrap快速制作后台界面
2016/12/05 Javascript
iscroll实现下拉刷新功能
2017/07/18 Javascript
浅谈ECMAScript6新特性之let、const
2017/08/02 Javascript
JavaScript简单实现合并两个Json对象的方法示例
2017/10/16 Javascript
快速了解vue-cli 3.0 新特性
2018/02/28 Javascript
vue组件传递对象中实现单向绑定的示例
2018/02/28 Javascript
Vue 页面状态保持页面间数据传输的一种方法(推荐)
2018/11/01 Javascript
JS实现深度优先搜索求解两点间最短路径
2019/01/17 Javascript
vue-router懒加载的3种方式汇总
2021/02/28 Vue.js
python中from module import * 的一个坑
2014/07/20 Python
python实现定时播放mp3
2015/03/29 Python
Python使用re模块正则提取字符串中括号内的内容示例
2018/06/01 Python
Python使用pymysql从MySQL数据库中读出数据的方法
2018/07/25 Python
python 实现矩阵上下/左右翻转,转置的示例
2019/01/23 Python
使用python接受tgam的脑波数据实例
2020/04/09 Python
解决Python spyder显示不全df列和行的问题
2020/04/20 Python
Python3合并两个有序数组代码实例
2020/08/11 Python
python 实现超级玛丽游戏
2020/11/25 Python
非凡女性奢华谦虚风格:The Modist
2017/10/28 全球购物
ALDI奥乐齐官方海外旗舰店:德国百年超市
2017/12/27 全球购物
Joie官方网上商店:购买服装和女装配饰
2018/06/05 全球购物
美国木工工具和用品商店:Woodcraft
2019/10/30 全球购物
经典优秀个人求职信分享
2013/12/12 职场文书
质量月活动策划方案
2014/03/10 职场文书
2015年中秋节活动总结
2015/03/23 职场文书
2019脱贫攻坚工作总结报告范本!
2019/08/06 职场文书
解决Navicat for Mysql连接报错1251的问题(连接失败)
2021/05/27 MySQL
Win11 S Mode版本泄露 正式上线后叫做Windows 11 SE
2021/11/21 数码科技