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]}] |
+--------------------------------------------+