JSON_ARRAY_INSERT()

简介

在指定路径下插入数据,并返回插入后的结果。

语法

JSON_ARRAY_INSERT(json_doc, path, val[, path, val] ...)

说明

1. 如果除val之外的任何参数为NULL,返回NULL。

2. 如果json_doc参数不是有效的JSON,或者任何路径参数不是有效的路径表达式,或者路径中包含*或**通配符,会发生错误。

3. val可以多次插入,但每一次插入后会产生新的JSON值,下一次计算以新值为基准。

4. 若path超出当前数组最大下标值,则会将val插入到数组末尾。

5. 若path不为数组下标,则会报错。

6. 若指定path下的值不在一个数组中,那么就不会对JSON进行插入操作。

示例

-- 多次插入到json_doc
SELECT JSON_ARRAY_INSERT('[1,2,3]','$[0]',4,'$[0]',5,'$[1]',6) FROM DUAL;
JSON_ARRAY_INSERT(json)      |
-----------------------------
[5, 6, 4, 1, 2, 3]           |
总数目:1


-- path超出数组下标最大值
SELECT JSON_ARRAY_INSERT('[1,2,3]','$[10]',4) FROM DUAL;
JSON_ARRAY_INSERT(json)      |
-----------------------------
[1, 2, 3, 4]                 |
总数目:1

SELECT JSON_ARRAY_INSERT('[1,[1,2],3]','$[1][10]',4) FROM DUAL;
JSON_ARRAY_INSERT(json)      |
-----------------------------
[1, [1, 2, 4], 3]            |
总数目:1


-- 指定路径下的值不在一个数组中
SELECT JSON_ARRAY_INSERT('{"a":"b"}','$[0]',4) FROM DUAL;
JSON_ARRAY_INSERT(json)      |
-----------------------------
{"a": "b"}                   |
总数目:1

SELECT JSON_ARRAY_INSERT('[1,{"a":"b"},2]','$[1].a[0]',4) FROM DUAL;
JSON_ARRAY_INSERT(json)      |
-----------------------------
[1, {"a": "b"}, 2]           |
总数目:1