MariaDB JSON_ARRAY_INSERT() 函数使用指南

在 MariaDB 中,JSON_ARRAY_INSERT() 是一个内置函数,它向 JSON 文档中的指定的数组中的指定位置插入一个值并返回新的 JSON 文档。

您还可以使用 JSON_ARRAY_APPEND() 将值追加到 JSON 数组的末尾。

MariaDB JSON_ARRAY_INSERT() 语法

这里是 MariaDB JSON_ARRAY_INSERT() 的语法:

JSON_ARRAY_INSERT(json, path, value[, path2, value2] ...)

参数

json
必需的。被修改的 JSON 文档。
path
必需的。插入新元素的数组元素位置。一个有效的路径表达式,它不能包含 ***。比如 $[0]$.a[0] 表示在数组的开头插入新元素。
value
必需的。被插入到数组的新元素值。

返回值

MariaDB JSON_ARRAY_INSERT() 函数用来修改 JSON 文档,它向 JSON 文档中的指定的数组中的指定位置插入一个值并返回新的 JSON 文档。

如果路径表达式指示的数组元素超过了数组的长度,那么新元素将插入到数组的尾部。

如果 JSON 文档或者路径为 NULL,此函数将返回 NULL

JSON_ARRAY_INSERT() 函数将在以下情况下返回错误:

  • 如果参数 json 不是有效的 JSON 文档,MariaDB 将会给出错误。您可以使用 JSON_VALID() 验证 JSON 文档的有效性。
  • 如果参数 path 不是有效的路径表达式或者其中包含 ***, MariaDB 将会给出错误。
  • 如果参数 path 指示的不是数组元素的路径, MariaDB 将会给出错误。

MariaDB JSON_ARRAY_INSERT() 示例

这里列出了几个常见的 JSON_ARRAY_INSERT() 用法示例。

让我们首先创建一个 JSON 文档以便于演示下面的示例:

SET @json = '[1, [2, 3], {"a": [4, 5]}]';

在数组指定位置插入元素

让我们在数组的开头插入一个元素:

SELECT JSON_ARRAY_INSERT(@json, '$[0]', 0);

输出:

+-------------------------------------+
| JSON_ARRAY_INSERT(@json, '$[0]', 0) |
+-------------------------------------+
| [0, 1, [2, 3], {"a": [4, 5]}]       |
+-------------------------------------+

让我们将新元素插入到数组的第 3 个元素的位置:

SELECT JSON_ARRAY_INSERT(@json, '$[2]', 4);

输出:

+-------------------------------------+
| JSON_ARRAY_INSERT(@json, '$[2]', 4) |
+-------------------------------------+
| [1, [2, 3], 4, {"a": [4, 5]}]       |
+-------------------------------------+

让我们在数组的末尾插入新元素:

SELECT JSON_ARRAY_INSERT(@json, '$[3]', 'x');

输出:

+---------------------------------------+
| JSON_ARRAY_INSERT(@json, '$[3]', 'x') |
+---------------------------------------+
| [1, [2, 3], {"a": [4, 5]}, "x"]       |
+---------------------------------------+

向内嵌数组中插入元素

SELECT JSON_ARRAY_INSERT(@json, '$[1][0]', 'x');

输出:

+------------------------------------------+
| JSON_ARRAY_INSERT(@json, '$[1][0]', 'x') |
+------------------------------------------+
| [1, ["x", 2, 3], {"a": [4, 5]}]          |
+------------------------------------------+

向对象中的数组中插入元素

SELECT JSON_ARRAY_INSERT(@json, '$[2].a[0]', 'x');

输出:

+--------------------------------------------+
| JSON_ARRAY_INSERT(@json, '$[2].a[0]', 'x') |
+--------------------------------------------+
| [1, [2, 3], {"a": ["x", 4, 5]}]            |
+--------------------------------------------+

结论

在 MariaDB 中,JSON_ARRAY_INSERT() 是一个内置函数,它向 JSON 文档中的指定的数组中的指定位置插入一个值并返回新的 JSON 文档。