MariaDB JSON_SET() 函数的基础用法与实例

MariaDB 的 JSON_SET() 函数提供了一种方便的方法来更新 JSON 文档中的值。

发布于

在处理 JSON 数据时,我们经常需要修改 JSON 文档中的内容。MariaDB 的 JSON_SET() 函数提供了一种方便的方法来更新 JSON 文档中的值。本文将介绍 JSON_SET() 函数的基本用法,并通过具体实例来展示如何在实际应用中使用这个函数。

语法

JSON_SET() 函数的基本语法如下:

JSON_SET(json_doc, path, value[, path, value] ...)
  • json_doc 是一个 JSON 格式的字符串。
  • path 是指向 json_doc 中的元素的路径。
  • value 是要设置的新值。

如果指定的路径不存在,JSON_SET() 会创建一个新的元素。如果路径存在,它会更新现有的值。

实例

更新 JSON 对象中的值

SET @json = '{"name": "Alice", "age": 25}';
SELECT JSON_SET(@json, '$.age', 26);

输出结果为:

+------------------------------+
| JSON_SET(@json, '$.age', 26) |
+------------------------------+
| {"name": "Alice", "age": 26} |
+------------------------------+

在 JSON 数组中添加新元素

SET @json = '["apple", "banana"]';
SELECT JSON_SET(@json, '$[2]', 'cherry');

输出结果为:

+-----------------------------------+
| JSON_SET(@json, '$[2]', 'cherry') |
+-----------------------------------+
| ["apple", "banana", "cherry"]     |
+-----------------------------------+

在嵌套的 JSON 对象中更新值

SET @json = '{"person": {"name": "Alice", "age": 25}, "city": "Paris"}';
SELECT JSON_SET(@json, '$.person.age', 30);

输出结果为:

+-----------------------------------------------------------+
| JSON_SET(@json, '$.person.age', 30)                       |
+-----------------------------------------------------------+
| {"person": {"name": "Alice", "age": 30}, "city": "Paris"} |
+-----------------------------------------------------------+

同时更新多个值

SET @json = '{"name": "Alice", "age": 25, "city": "Paris"}';
SELECT JSON_SET(@json, '$.age', 26, '$.city', 'London');

输出结果为:

+--------------------------------------------------+
| JSON_SET(@json, '$.age', 26, '$.city', 'London') |
+--------------------------------------------------+
| {"name": "Alice", "age": 26, "city": "London"}   |
+--------------------------------------------------+

从表中查询并更新 JSON 值

首先,我们创建一个表并插入数据。

CREATE TABLE users (id INT, profile JSON);
INSERT INTO users VALUES (1, '{"name": "Alice", "age": 25}');

然后,我们可以更新表中的 JSON 数据。

UPDATE users SET profile = JSON_SET(profile, '$.age', 26) WHERE id = 1;

相关函数

  • JSON_INSERT(): 如果指定路径不存在,则在 JSON 文档中添加一个新元素。
  • JSON_REPLACE(): 如果指定路径存在,则替换现有元素的值。
  • JSON_REMOVE(): 从 JSON 文档中删除指定路径的元素。

结论

JSON_SET() 函数是一个强大的工具,它允许我们在不破坏原有 JSON 结构的前提下更新 JSON 文档中的值。通过上述实例,我们可以看到它在实际应用中的灵活性和便捷性。无论是简单的值更新,还是复杂的嵌套结构修改,JSON_SET() 都能提供有效的解决方案。在处理 JSON 数据时,它是一个不可或缺的函数。