JSON_ARRAY_INSERT
描述
该函数用于将数组插入文档中并返回修改后的文档。
语法
JSON_ARRAY_INSERT(json_doc, path, val[, path, val] ...)
说明
json_doc 参数用于指定 JSON 文档,path 为路径参数。如果任何参数为 NULL,则返回 NULL。
以下情况都会发生报错:
-
json_doc参数不是有效的 JSON 文档。 -
path参数不是有效的路径表达式。 -
path参数包含 * 或 ** 通配符。
路径值对 path-value 按照从左到右的顺序进行评估。通过评估的 path-value 对所生成的文档作为评估下一对的新值。
JSON 文档中未经路径识别所属数组的 path-value 对将被忽略。
如果路径识别了某一数组元素,则在该元素位置插入相应的值,将所有后续值向右移动。如果路径识别的数组位置超出数组末尾的位置,则将值插入到数组末尾。
示例
SET @jn = '["a", {"b": [1, 2]}, [3, 4]]';
Query OK, 0 rows affected (0.000 sec)
SELECT JSON_ARRAY_INSERT(@jn, '$[1]', 'x');
+------------------------------------+
| JSON_ARRAY_INSERT(@jn, '$[1]', 'x') |
+------------------------------------+
| ["a", "x", {"b": [1, 2]}, [3, 4]] |
+------------------------------------+
1 row in set (0.001 sec)
SELECT JSON_ARRAY_INSERT(@jn, '$[50]', 'x');
+--------------------------------------+
| JSON_ARRAY_INSERT(@jn, '$[100]', 'x') |
+--------------------------------------+
| ["a", {"b": [1, 2]}, [3, 4], "x"] |
+--------------------------------------+
1 row in set (0.001 sec)
SELECT JSON_ARRAY_INSERT(@jn, '$[1].b[0]', 'x');
+-----------------------------------------+
| JSON_ARRAY_INSERT(@jn, '$[1].b[0]', 'x') |
+-----------------------------------------+
| ["a", {"b": ["x", 1, 2]}, [3, 4]] |
+-----------------------------------------+
1 row in set (0.001 sec)
SELECT JSON_ARRAY_INSERT(@jn, '$[2][1]', 'y');
+---------------------------------------+
| JSON_ARRAY_INSERT(@jn, '$[2][1]', 'y') |
+---------------------------------------+
| ["a", {"b": [1, 2]}, [3, "y", 4]] |
+---------------------------------------+
1 row in set (0.001 sec)
SELECT JSON_ARRAY_INSERT(@n, '$[0]', 'x', '$[2][1]', 'y');
+----------------------------------------------------+
| JSON_ARRAY_INSERT(@jn, '$[0]', 'x', '$[2][1]', 'y') |
+----------------------------------------------------+
| ["x", "a", {"b": [1, 2]}, [3, 4]] |
+----------------------------------------------------+
1 row in set (0.001 sec)