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