MySQL 5.7+,嵌套路径中的 JSON_SET 值

作者:编程家 分类: js 时间:2025-12-27

MySQL 5.7+中的JSON_SET函数是一项强大的功能,它允许我们在嵌套路径中设置JSON值。在这篇文章中,我们将详细介绍JSON_SET函数的用法及其应用案例。

JSON_SET函数的用法

JSON_SET函数用于在给定的JSON对象中设置指定路径的值。它接受三个参数:JSON对象、嵌套路径和新值。嵌套路径是一个由点(.)分隔的字符串,用于指定要设置值的位置。如果路径不存在,JSON_SET函数将自动创建它。

下面是JSON_SET函数的基本语法:

JSON_SET(json_obj, path, val)

其中,`json_obj`是要修改的JSON对象,`path`是要设置值的嵌套路径,`val`是要设置的新值。

使用JSON_SET设置嵌套路径中的值

让我们通过一个示例来说明如何使用JSON_SET函数设置嵌套路径中的值。

假设我们有一个存储用户信息的JSON对象。该对象具有以下结构:

json

{

"name": "John",

"age": 30,

"address": {

"street": "123 Main St",

"city": "New York"

}

}

现在,我们想要将用户的城市更改为"San Francisco"。我们可以使用JSON_SET函数来实现:

sql

UPDATE users SET info = JSON_SET(info, '$.address.city', 'San Francisco') WHERE id = 1;

在上面的示例中,我们使用了UPDATE语句和JSON_SET函数来更新了用户的城市值。使用`'$'`表示根路径,`'$.address.city'`表示要更新的嵌套路径。最后一个参数是新的城市值。

案例代码

下面是一个完整的示例代码,演示了如何使用JSON_SET函数更新嵌套路径中的值:

sql

-- 创建表

CREATE TABLE users (

id INT PRIMARY KEY,

info JSON

);

-- 插入示例数据

INSERT INTO users (id, info) VALUES (1, '{"name": "John", "age": 30, "address": {"street": "123 Main St", "city": "New York"}}');

-- 更新嵌套路径中的值

UPDATE users SET info = JSON_SET(info, '$.address.city', 'San Francisco') WHERE id = 1;

-- 查询更新后的结果

SELECT * FROM users;

在上面的代码中,我们首先创建了一个名为`users`的表,该表具有一个`info`列,用于存储用户信息的JSON对象。然后,我们插入了一个示例数据行,其中包含了用户的信息。

接下来,我们使用UPDATE语句和JSON_SET函数来更新了嵌套路径`$.address.city`中的值为"San Francisco"。最后,我们使用SELECT语句来验证更新结果。

在本文中,我们介绍了MySQL 5.7+中的JSON_SET函数及其用法。通过使用JSON_SET函数,我们可以轻松地在嵌套路径中设置JSON值。这个功能可以在许多场景中发挥作用,例如更新嵌套对象的特定属性值。希望本文能帮助您更好地理解和应用JSON_SET函数。