首页 MySQL JSON_ARRAY_INSERT() 函数

MySQL JSON_ARRAY_INSERT() 函数

MySQL JSON_ARRAY_INSERT() 函数向 JSON 文档中的指定的数组中的指定位置插入一个值并返回新的 JSON 文档。

JSON_ARRAY_INSERT() 语法

这里是 MySQL JSON_ARRAY_INSERT() 的语法:

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

参数

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

返回值

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

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

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

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

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

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]}]            |
+--------------------------------------------+
特别声明:本站部分内容收集于互联网是出于更直观传递信息的目的。该内容版权归原作者所有,并不代表本站赞同其观点和对其真实性负责。如该内容涉及任何第三方合法权利,请及时与824310991@qq.com联系,我们会及时反馈并处理完毕。