JSON_MERGE_PRESERVE()

JSON_MERGE_PRESERVE(doc…) 通过保留重复键并合并数组元素来合并两个或更多 JSON 文档,这与会覆盖和删除成员的 JSON_MERGE_PATCH() 不同。

描述

JSON_MERGE_PRESERVE(json [, json] ...) 从左到右合并输入文档,同时保留所有值:

  • 同键的对象成员会被合并为一个值数组。

  • 数组会被拼接。

  • 无法合并的标量值会被合并为一个数组。

这是与 MySQL 兼容的合并行为。如果需要 RFC 7396 的覆盖与删除语义,请使用 JSON_MERGE_PATCH()

语法

JSON_MERGE_PRESERVE(json [, json] ...)

参数

参数

说明

json

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

返回值

返回合并后的 JSON 文档。

示例

DROP DATABASE IF EXISTS json_merge_preserve_demo;
CREATE DATABASE json_merge_preserve_demo;
USE json_merge_preserve_demo;

SELECT JSON_MERGE_PRESERVE('{"a":1,"b":2}', '{"a":3,"c":4}') AS merged;
SELECT JSON_MERGE_PRESERVE('[1,2]', '[true,false]') AS array_merge;
SELECT JSON_MERGE_PRESERVE('{"a":{"x":1}}', '{"a":{"y":2}}') AS nested_merge;

DROP DATABASE json_merge_preserve_demo;