JSON_VALID
和JSON_EXTRACT
函数在业务开发的过程中可以极大提供我们处理数据的效率,特别对业务中灵活字段的处理场景,我们可以快速的对这些数据中提取想要的字段。文章目录
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,函数返回 1;如果不是,则返回 0。SELECT JSON_VALID('{"name": "MySQL", "version": "8.0"}');
-- 返回 1,表示是有效的 JSON
SELECT JSON_VALID('This is not a JSON string');
-- 返回 0,表示不是有效的 JSON
JSON_SET
、JSON_INSERT
等函数来更新 JSON 对象。UPDATE products SET details = JSON_SET(details, '$.price', 1099.99) WHERE id = 1;
-- 更新 JSON 对象中的 price 属性
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_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 数据,减少应用程序层的数据处理负担,提高查询效率。
SELECT name, JSON_EXTRACT(details, '$.price') AS price FROM products WHERE JSON_EXTRACT(details, '$.price') > 500;
-- 选择价格超过 500 的产品及其名称
MySQL 的 JSON 支持为开发者提供了强大的工具来处理 JSON 数据。通过 JSON_VALID
和 JSON_EXTRACT
函数,开发者可以确保数据的有效性,并灵活地从 JSON 文档中提取所需信息。Quantumult X分流规则设置与使用指南宝塔面板v2ray安装、配置与使用教程电脑VPN翻墙回国教程在pfsense上配置Shadowsocks:全面教程v2rayng 更新订阅失败:常见问题和解决方法Clash每日链接:使用教程、常见问题解答Pictory一个AI视频创作平台深入了解ssh代理Shadowsocks 二维码生成教程Shadowrocket负载均衡使用教程V2ray 服务商推荐(2025好用的 V2ray 机场推荐)2025 新版苹果 Mac 电脑 Clash for Windows 下载和使用教程v2rayNG最新V2Ray Android安卓科学上网代理客户端下载 机场节点订阅使用教程Telegram 如何解除敏感,让您的iOS设备浏览成人内容不受限制。忍者云机场怎么样 – SSR 机场 | 忍者云,忍着用