JSON_MERGE_PATCH()

JSON_MERGE_PATCH(doc…) 按照 RFC 7396 语义合并两个或更多 JSON 文档,其中 null 值删除成员,后出现的对象覆盖先出现的值。

描述

JSON_MERGE_PATCH(json [, json] ...) 使用 RFC 7396 merge-patch 语义从左到右合并输入文档:

  • 后出现的文档中的对象成员会替换先出现的同键成员。

  • 后出现的文档中值为 null 的成员会删除对应成员。

  • 数组和标量值会被整体替换,而不是合并。

这与 JSON_MERGE_PRESERVE() 不同,后者会合并重复的键和数组元素,而不是覆盖。

语法

JSON_MERGE_PATCH(json [, json] ...)

参数

参数

说明

json

要合并的两个或更多 JSON 文档。

返回值

返回合并后的 JSON 文档。

示例

DROP DATABASE IF EXISTS json_merge_patch_demo;
CREATE DATABASE json_merge_patch_demo;
USE json_merge_patch_demo;

SELECT JSON_MERGE_PATCH('{"a":1,"b":2}', '{"b":3,"c":4}') AS patched;
SELECT JSON_MERGE_PATCH('{"a":1,"b":2}', '{"b":null}') AS deleted_b;
SELECT JSON_MERGE_PATCH('{"a":{"x":1}}', '{"a":{"y":2}}') AS nested_patch;

DROP DATABASE json_merge_patch_demo;