MySql中的json_extract函数处理json字段详情

作者:??一灰灰???? 时间:2024-01-14 21:06:23 

前言

在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串的场景

来源:https://juejin.cn/post/7103482347894358046

标签:MySql,extract,json,字段
0
投稿

猜你喜欢

  • 基于Python实现经典植物大战僵尸游戏

    2021-01-28 11:17:20
  • Sql中将datetime转换成字符串的方法(CONVERT)

    2024-01-22 10:25:59
  • Golang中slice删除元素的性能对比

    2024-05-05 09:33:03
  • Go语言流程控制之goto语句与无限循环

    2023-08-31 06:43:00
  • 解析SQL Server与ASP互操作的时间处理

    2009-02-01 16:40:00
  • XML正在接管Web服务 成为SOA的基础

    2008-09-05 17:21:00
  • nodejs中的异步编程知识点详解

    2024-05-08 10:10:55
  • Tensorflow 自定义loss的情况下初始化部分变量方式

    2023-02-26 22:43:39
  • python神经网络Xception模型复现详解

    2021-01-08 21:35:40
  • Python爬取网页信息的示例

    2021-02-09 10:43:21
  • Python实现Matplotlib,Seaborn动态数据图的示例代码

    2023-02-03 23:47:22
  • python实现二叉排序树

    2022-08-26 04:34:37
  • python:解析requests返回的response(json格式)说明

    2023-11-05 15:43:25
  • Python 模拟动态产生字母验证码图片功能

    2022-02-10 21:03:35
  • pyinstaller打包后,配置文件无法正常读取的解决

    2022-12-17 18:22:09
  • Python简单实现图片转字符画的实例项目

    2023-02-24 02:01:47
  • Web设计中的黄金分割[译]

    2009-02-20 13:41:00
  • mysql如何优化插入记录速度

    2024-01-29 07:44:35
  • PHP实现数组根据某个字段进行水平合并,横向合并案例分析

    2023-10-04 04:55:53
  • asp 简单分页代码

    2011-03-11 10:53:00
  • asp之家 网络编程 m.aspxhome.com