MySQL数据库函数之JSON_EXTRACT示例代码

 更新时间:2025年02月12日 09:28:59   作者:白萝卜弟弟  
这篇文章主要介绍了MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对象属性、数组元素和嵌套结构的访问,示例展示了如何提取简单值、嵌套值和数组中的值,需要的朋友可以参考下

前言

在 MySQL 中,JSON_EXTRACT() 函数用于从 JSON 文档中提取一个或多个值。这个函数非常有用,特别是在处理存储在 JSON 格式中的复杂数据时。下面是一些关于如何使用 JSON_EXTRACT() 的详细说明和示例。

基本语法

JSON_EXTRACT(json_doc, path [, path] ...)
  • json_doc: 要从中提取值的 JSON 文档。
  • path: 一个或多个路径表达式,用于指定要提取的值的位置。路径表达式以 $ 开头,表示 JSON 文档的根。

路径表达式

路径表达式使用类似于 JavaScript 的对象和数组访问语法:

  • 对象属性:使用点 . 访问,例如 $.name
  • 数组元素:使用方括号 [] 访问,例如 $[0]
  • 嵌套结构:可以组合使用点和方括号,例如 $.address.street 或 $.items[0].name

示例

示例 1: 提取简单值

假设有一个表 users,其中有一个字段 data 存储了用户的 JSON 数据:

CREATE TABLE users (
    id INT PRIMARY KEY,
    data JSON
);

INSERT INTO users (id, data) VALUES
(1, '{"name": "Alice", "age": 30, "city": "New York"}'),
(2, '{"name": "Bob", "age": 25, "city": "Los Angeles"}');

我们可以使用 JSON_EXTRACT() 提取每个用户的名字:

SELECT id, JSON_EXTRACT(data, '$.name') AS name
FROM users;

输出结果:

+----+--------+
| id | name   |
+----+--------+
| 1  | "Alice"|
| 2  | "Bob"  |
+----+--------+

示例 2: 提取嵌套值

假设 JSON 数据中包含嵌套的对象:

INSERT INTO users (id, data) VALUES
(3, '{"name": "Charlie", "age": 35, "address": {"street": "123 Main St", "city": "Chicago"}}');

我们可以提取嵌套的街道地址:

SELECT id, JSON_EXTRACT(data, '$.address.street') AS street
FROM users;

输出结果:

+----+-----------------+
| id | street          |
+----+-----------------+
| 1  | NULL            |
| 2  | NULL            |
| 3  | "123 Main St"   |
+----+-----------------+

示例 3: 提取数组中的值

假设 JSON 数据中包含一个数组:

INSERT INTO users (id, data) VALUES
(4, '{"name": "David", "age": 40, "hobbies": ["reading", "traveling", "cooking"]}');

我们可以提取数组中的第一个爱好:

SELECT id, JSON_EXTRACT(data, '$.hobbies[0]') AS hobby
FROM users;

输出结果:

+----+----------+
| id | hobby    |
+----+----------+
| 1  | NULL     |
| 2  | NULL     |
| 3  | NULL     |
| 4  | "reading"|
+----+----------+

注意事项

  • JSON_EXTRACT() 返回的结果是一个 JSON 值,即使它是标量值(如字符串或数字)。如果需要将结果转换为标量类型,可以使用 CAST 函数。例如:

    SELECT id, CAST(JSON_EXTRACT(data, '$.name') AS CHAR) AS name
    FROM users;
    
  • 如果路径表达式指向的值不存在,JSON_EXTRACT() 将返回 NULL

  • 路径表达式中的索引是从 0 开始的。

总结 

到此这篇关于MySQL数据库函数之JSON_EXTRACT的文章就介绍到这了,更多相关MySQL函数JSON_EXTRACT内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL数据库基础入门之常用命令小结

    MySQL数据库基础入门之常用命令小结

    这篇文章主要介绍了MySQL数据库基础入门之常用命令,结合实例形式分析了MySQL数据库管理、备份、日志常用操作命令与使用注意事项,需要的朋友可以参考下
    2020-05-05
  • ubuntu20安装配置mysql8.0.23步骤详解

    ubuntu20安装配置mysql8.0.23步骤详解

    这篇文章主要为大家介绍了ubuntu20安装配置mysql8.0.23步骤详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • mysql8.0 JSON_CONTAINS的使用说明

    mysql8.0 JSON_CONTAINS的使用说明

    这篇文章主要介绍了mysql8.0 JSON_CONTAINS的使用说明,具有很好的参考价值,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • pymysql.err.DataError:(1264, ")异常的有效解决方法(最新推荐)

    pymysql.err.DataError:(1264, ")异常的有效解决方法(最新推荐)

    遇到pymysql.err.DataError错误时,错误代码1264通常指的是MySQL数据库中的Out of range value for column错误,这意味着你尝试插入或更新的数据超过了对应数据库列所允许的范围,这篇文章主要介绍了pymysql.err.DataError:(1264, ")异常的有效问题,需要的朋友可以参考下
    2024-05-05
  • MySQL 数据库的监控方式小结

    MySQL 数据库的监控方式小结

    本文主要介绍了MySQL 数据库的监控方式小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • 从入门到精通MySQL联合查询

    从入门到精通MySQL联合查询

    这篇文章主要介绍了从入门到精通MySQL联合查询,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2025-07-07
  • Mysql大表修改字段两种解决方式

    Mysql大表修改字段两种解决方式

    这篇文章主要给大家介绍了关于Mysql大表修改字段的两种解决方式,文中介绍了在处理平台币订单表字段类型修改时遇到的问题及解决方案,需要的朋友可以参考下
    2024-11-11
  • mysql数据库应付大流量网站的的3种架构扩展方式介绍

    mysql数据库应付大流量网站的的3种架构扩展方式介绍

    这篇文章主要介绍了mysql数据库应付大流量网站的的3种架构扩展方式介绍,它们分别是读写分离、垂直分区、水平分区,本文分别对它们做了讲解,需要的朋友可以参考下
    2014-07-07
  • MySQL导入sql文件的三种方法小结

    MySQL导入sql文件的三种方法小结

    本文主要介绍了MySQL导入sql文件的三种方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • windows系统mysql压缩包版本安装过程

    windows系统mysql压缩包版本安装过程

    这篇文章主要介绍了windows系统mysql压缩包版本安装过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03

最新评论