在JSON文件指定位置中新增JSON值。
命令格式
JSON json_insert(JSON <input>, ARRAY STRING <path>, JSON <value>, BOOLEAN <insert_after>);
参数说明
input:必填,被修改的JSON内容。该参数支持的类型为:JSON ARRAY、JSON OBJECT。
path:必填,待插入的JSON内容的位置。
value:必填,待插入的JSON内容。
insert_after:必填。
若input参数中包含数组,且指定path的值已存在时,添加值的位置:
true:在指定位置后面插入新值。
false(默认值):在指定位置前面插入新值。
如果 m>=n,在数组末尾添加值value。
如果 m<-n,在数组开头添加值value。
如果 -n<=m<n,根据insert_after的值确定添加值value的位置。
若input参数中未包含数组,默认将值插入至末尾。
说明若input参数中包含数组,数组中的JSON内容插入规则,假设input中数组的长度为n,指定插入的位置为m时:
返回值说明
修改后的JSON。
使用示例
示例1:在指定位置插入新值。
select json_insert(JSON'{"f1":1,"f2":{"t1":1,"t2":2}}', array("f2","t3"), JSON'3', false );
返回结果如下。
+-----+ | _c0 | +-----+ | {"f1":1,"f2":{"t1":1,"t2":2,"t3":3}} | +-----+
示例2:在数组指定值前面插入数据。
select json_insert(JSON'{"f1":[0,1,2]}', array("f1","0"), JSON'10', false);
返回结果如下。
+-----+ | _c0 | +-----+ | {"f1":[10,0,1,2]} | +-----+
示例3:在数组指定值后面插入数据。
select json_insert(JSON'{"f1":[0,1,2]}', array("f1","0"), JSON'10', true);
返回结果如下。
+-----+ | _c0 | +-----+ | {"f1":[0,10,1,2]} | +-----+
示例4:在数组中插入值,当插入的位置大于JSON内容数组的长度时,在数组末尾插入。
select json_insert(JSON'{"f1":[0,1,2]}', array("f1","4"), JSON'4', false);
返回结果如下。
+-----+ | _c0 | +-----+ | {"f1":[0,1,2,4]} | +-----+
示例5:在数组中插入值,当插入的位置小于JSON内容数组长度的负数时,在数组开头插入。
select json_insert(JSON'{"f1":[0,1,2]}', array("f1","-4"), JSON'4', false);
返回结果如下。
+-----+ | _c0 | +-----+ | {"f1":[4,0,1,2]} | +-----+
示例6:在数组中插入值,当插入位置介于数组长度(不包含)与长度负数时,在指定位置插入。
select json_insert(JSON'{"f1":[0,1,2]}', array("f1","1"), JSON'10', false);
返回结果如下。
+-----+ | _c0 | +-----+ | {"f1":[0,10,1,2]} | +-----+
文档内容是否对您有帮助?