JSON_SET
替换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] | +-----+