翻译页面
本页面由 AI 辅助从英文翻译而来。如两者存在差异,以英文版本为准。
JSON_PATCH
对 JSON 文档应用 JSON MergePatch(RFC-7396),按指定的操作对其进行修改。此函数用于添加、修改或删除 JSON 对象中的元素,但将 JSON 数组视为原子单元。
另请参阅:
[SELECT] [JSON_EXTRACT]
语法
SELECT JSON_PATCH(target_json, patch_json) FROM <multipartIdentifier>;
参数
target_json
要应用补丁的 JSON 文档。
patch_json
一个 JSON 文档,描述要按照 MergePatch 算法应用的更改。
返回值
返回应用补丁后经过修改的 JSON 文档。
示例
简单的 MergePatch
-- Example: Simple merge of new elements into the target JSON object
SELECT JSON_PATCH('{"a":1,"b":2}', '{"c":3,"d":4}') AS patched_json;
输出:{"a":1,"b":2,"c":3,"d":4}
替换数组中的元素
-- Example: Replacing an array with a single value in the JSON object
SELECT JSON_PATCH('{"a":[1,2],"b":2}', '{"a":9}') AS patched_json;
输出:{"a":9,"b":2}
使用 null 移除元素
-- Example: Removing an element by setting it to null
SELECT JSON_PATCH('{"a":1,"b":2}', '{"a":9,"b":null,"c":8}') AS patched_json;
输出:{"a":9,"c":8}
嵌套的 MergePatch
-- Example: Nested merge patch updating sub-keys within a nested JSON object
SELECT JSON_PATCH('{"a":{"x":1,"y":2},"b":3}', '{"a":{"y":9},"c":8}') AS patched_json;
输出:{"a":{"x":1,"y":9},"b":3,"c":8}
此功能可以对存储在数据库中的 JSON 进行灵活的动态更新,对于需要按条件修改数据结构的应用尤其有用。