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 14 MySQL
MySQL删除和插入数据很慢的问题解决
Jun 03 MySQL
Mysql数据库值的添加、修改、删除及清空操作实例
Jun 20 MySQL
mysql 直接拷贝data 目录下文件还原数据的实现
Jul 25 MySQL
SQL实现LeetCode(180.连续的数字)
Aug 04 MySQL
SQL基础查询和LINQ集成化查询
Jan 18 MySQL
数据分析数据库ClickHouse在大数据领域应用实践
Apr 03 MySQL
MySQL 数据库范式化设计理论
Apr 22 MySQL
MySQL 字符集 character
May 04 MySQL
MySQL解决Navicat设置默认字符串时的报错问题
Jun 16 MySQL
mysql通过group by分组取最大时间对应数据的两种有效方法
Sep 23 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强制类型转换,慎用!
2013/06/06 PHP
php的mkdir()函数创建文件夹比较安全的权限设置方法
2014/07/28 PHP
PHP判断网络文件是否存在的方法
2015/03/12 PHP
php 根据URL下载远程图片、压缩包、pdf等文件到本地
2019/07/26 PHP
setTimeout函数兼容各主流浏览器运行执行效果实例
2013/06/13 Javascript
javascript实现playfair和hill密码算法
2014/12/07 Javascript
node.js中的querystring.escape方法使用说明
2014/12/10 Javascript
js+css实现有立体感的按钮式文字竖排菜单效果
2015/09/01 Javascript
Java中Timer的用法详解
2015/10/21 Javascript
Bootstrap实现默认导航栏效果
2020/09/21 Javascript
JS实现的四级密码强度检测功能示例
2017/05/11 Javascript
centos 上快速搭建ghost博客方法分享
2018/05/23 Javascript
vue表单验证你真的会了吗?vue表单验证(form)validate
2019/04/07 Javascript
JS正则表达式验证端口范围(0-65535)
2020/01/06 Javascript
vue项目中使用bpmn为节点添加颜色的方法
2020/04/30 Javascript
[01:01:18]VP vs NIP 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
用python实现的可以拷贝或剪切一个文件列表中的所有文件
2009/04/30 Python
python anaconda 安装 环境变量 升级 以及特殊库安装的方法
2017/06/21 Python
解决python3 Pycharm上连接数据库时报错的问题
2018/12/03 Python
解析python的局部变量和全局变量
2019/08/15 Python
opencv实现简单人脸识别
2021/02/19 Python
python 3.74 运行import numpy as np 报错lib\site-packages\numpy\__init__.py
2019/10/06 Python
Django框架安装方法图文详解
2019/11/04 Python
python3 使用openpyxl将mysql数据写入xlsx的操作
2020/05/15 Python
如何用Anaconda搭建虚拟环境并创建Django项目
2020/08/02 Python
轻化专业学生实习自我鉴定
2013/09/20 职场文书
大学生创业计划书的用途
2014/01/08 职场文书
快餐店的创业计划书范文
2014/01/29 职场文书
师范毕业生求职信
2014/07/11 职场文书
工作表扬信范文
2015/01/17 职场文书
家属慰问信
2015/02/14 职场文书
小平您好观后感
2015/06/09 职场文书
行为习惯主题班会
2015/08/14 职场文书
2015年四年级班主任工作总结
2015/10/22 职场文书
安装pytorch时报sslerror错误的解决方案
2021/05/17 Python
Python数据分析之pandas读取数据
2021/06/02 Python