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