Categories: Mysql数据库

Mysql JSON_VALID和JSON_EXTRACT快速提取JSON数据

MySQL 5.7 版本引入了对 JSON 数据类型的原生支持,这为存储和查询 JSON 数据提供了极大的便利。MySQL 中的 JSON_VALIDJSON_EXTRACT 函数在业务开发的过程中可以极大提供我们处理数据的效率,特别对业务中灵活字段的处理场景,我们可以快速的对这些数据中提取想要的字段。

一、MySQL 中的 JSON 数据类型

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在 MySQL 中,JSON 数据类型提供了一种存储和操作 JSON 数据的方式。

实例:

CREATE TABLE products (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255),
    details JSON
);

INSERT INTO products (name, details) VALUES ('Laptop', '{"color": "black", "price": 999.99}');

二、使用 JSON_VALID 验证 JSON 数据

JSON_VALID 函数用于检查一个字符串是否是有效的 JSON 格式。如果字符串是有效的 JSON,函数返回 1;如果不是,则返回 0。

SELECT JSON_VALID('{"name": "MySQL", "version": "8.0"}');
-- 返回 1,表示是有效的 JSON

SELECT JSON_VALID('This is not a JSON string');
-- 返回 0,表示不是有效的 JSON

三、JSON 数据的存储与管理

在 MySQL 中,存储 JSON 数据时,可以使用 JSON_SETJSON_INSERT 等函数来更新 JSON 对象。

UPDATE products SET details = JSON_SET(details, '$.price', 1099.99) WHERE id = 1;
-- 更新 JSON 对象中的 price 属性

四、使用 JSON_EXTRACT 提取 JSON 数据

JSON_EXTRACT 函数用于从 JSON 文档中提取数据。它允许你通过路径表达式来定位并提取 JSON 对象或数组中的值。

SELECT JSON_EXTRACT(details, '$.color') FROM products WHERE id = 1;
-- 提取 JSON 对象中的 color 属性值

SELECT JSON_EXTRACT(details, '$.price') FROM products WHERE id = 1;
-- 提取 JSON 对象中的 price 属性值

五、处理复杂的 JSON 数据结构

当 JSON 数据结构变得复杂时,JSON_EXTRACT 可以配合使用数组索引和嵌套路径来提取深层数据。

CREATE TABLE orders (
    id INT AUTO_INCREMENT PRIMARY KEY,
    customer VARCHAR(255),
    order_details JSON
);

INSERT INTO orders (customer, order_details) VALUES ('John Doe', '[{"product": "Laptop", "quantity": 2}, {"product": "Mouse", "quantity": 1}]');

SELECT JSON_EXTRACT(order_details, '$[0].product') FROM orders WHERE id = 1;
-- 提取第一个订单项的产品名称

六、JSON 函数在查询优化中的应用

使用 JSON 函数可以在查询中直接处理 JSON 数据,减少应用程序层的数据处理负担,提高查询效率。

SELECT name, JSON_EXTRACT(details, '$.price') AS price FROM products WHERE JSON_EXTRACT(details, '$.price') > 500;
-- 选择价格超过 500 的产品及其名称

MySQL 的 JSON 支持为开发者提供了强大的工具来处理 JSON 数据。通过 JSON_VALIDJSON_EXTRACT 函数,开发者可以确保数据的有效性,并灵活地从 JSON 文档中提取所需信息。

4.0
02
SQLAdvisor是一款开源的SQL优化工具(5.5k stars)
嘻嘻

嘻嘻IT: 笔者是一个工作七八年的程序猿老鸟,从事涉及的技术栈主要包括PHP、Linux、Devops等,喜欢研究新技术,尝试新技术,提升技术自动化和开发效率,致力于write less,do more! 技术每年都会层出不穷,领域划分的越来越细,不可能学习所有的东西,保持对技术的好奇心,理解技术中核心思想,做一个有深度,有思想的开发!

Recent Posts

WordPress如何过滤垃圾评论?

WordPress是一个功能强…

12小时 ago

不是所有的副业都适合程序员

程序员作为技术行业的中坚力量,…

2天 ago

常见搜索引擎蜘蛛UserAgent解析

在互联网的世界中,搜索引擎蜘蛛…

2天 ago

iproyal一款好用的VPN服务

IPRoyal不仅仅是一个代理…

2天 ago

国产哈希函数算法标准SM3详解

随着信息技术的快速发展,哈希函…

3天 ago