替換JSON檔案指定位置的值或新增對應的值。
命令格式
JSON json_set(JSON <input>, ARRAY STRING <path>, JSON <value>, BOOLEAN <create_if_missing>);參數說明
input:必填,被替換的JSON內容。該參數支援的類型為:JSON ARRAY、JSON OBJECT。
path:必填,被替換的JSON內容的位置,類型為ARRAY<STRING>,ARRAY裡的每一個值對應為JSON的一層嵌套定位路徑值,如果JSON是n層嵌套內容,那麼ARRAY數組對應為n個值。
value:必填,待替換的JSON值。
create_if_missing:必填,指定位置的值不存在時,是否將待替換的JSON內容添加到input中。取值為:
true:增加。
false(預設值):不增加。
傳回值
修改後的JSON。
使用樣本
樣本1:替換JSON指定位置的值。
select json_set(JSON'[{"f1":1,"f2":null},2,null,3]', array("0","f1"), JSON'[2,3,4]', false );返回結果如下。
+-----+ | _c0 | +-----+ | [{"f1":[2,3,4],"f2":null},2,null,3] | +-----+樣本2:替換JSON指定位置的值,值不存在就不替換。
select json_set(JSON'[{"f1":1,"f2":null},2,null,3]', array("0","f3"), JSON'[2,3,4]', false);返回結果如下。
+-----+ | _c0 | +-----+ | [{"f1":1,"f2":null},2,null,3] | +-----+樣本3:替換JSON指定位置的值,值不存在就新增。
select json_set(JSON'[{"f1":1,"f2":null},2,null,3]', array("0","f3"), JSON'[2,3,4]', true);返回結果如下。
+-----+ | _c0 | +-----+ | [{"f1":1,"f2":null,"f3":[2,3,4]},2,null,3] | +-----+