JSON_MERGE()

简介

合并两个或多个JSON文档。

语法

JSON_MERGE(json_doc, json_doc[, json_doc] ...)

说明

1. 合并按照以下规则进行:

(1)当两个相邻JSON数据类型相同时,有以下三种情况:

①两者都为数组,则合并为一个数组。

②两者都为对象,则合并为一个对象。

③其它类型,会构建一个数组,将两者插入其中。

(2)当两个相邻JSON数据类型不同时,有以下两种情况:

①其中有一个为数组,则将另一个插入数组中。

②两者都不为数组,则构建一个数组,将两者插入其中。

2. 当参数少于两个时,会报错。

3. 当参数大于或等于两个,并且其中一个或多个为NULL时,返回NULL。

示例

-- 相同类型合并
-- 数组与数组
SELECT JSON_MERGE('[1,2]', '[3,4]');
JSON_MERGE(json)      |
----------------------
[1, 2, 3, 4]          |
总数目:1

-- 对象与对象
SELECT JSON_MERGE('{"id":"1"}','{"name":"oscar"}');
JSON_MERGE(json)      |
----------------------
{"id": "1", "name": "o|
scar"}                |
总数目:1

-- 其它相同类型
SELECT JSON_MERGE('1','1');
JSON_MERGE(json)      |
----------------------
[1, 1]                |
总数目:1

SELECT JSON_MERGE('true','true');
JSON_MERGE(json)      |
----------------------
[true, true]          |
总数目:1

SELECT JSON_MERGE('"oscar"','"oscar"');
JSON_MERGE(json)      |
----------------------
["oscar", "oscar"]    |
总数目:1

SELECT JSON_MERGE('null','null');
JSON_MERGE(json)      |
----------------------
[null, null]          |
总数目:1


-- 不同类型合并
-- 数组与对象
SELECT JSON_MERGE('[1,2]','{"id":"1"}');
JSON_MERGE(json)      |
----------------------
[1, 2, {"id": "1"}]   |
总数目:1

-- 数组与数值
SELECT JSON_MERGE('[1,2]','1');
JSON_MERGE(json)      |
----------------------
[1, 2, 1]             |
总数目:1

-- 对象与数值
SELECT JSON_MERGE('{"name":"oscar"}','1');
JSON_MERGE(json)      |
----------------------
[{"name": "oscar"}, 1]|
总数目:1

-- 数值与字符串
SELECT JSON_MERGE('1','"abcd"');
JSON_MERGE(json)      |
----------------------
[1, "abcd"]           |
总数目:1


-- 包含NULL
SELECT JSON_MERGE('{"id":"name"}',NULL);
JSON_MERGE(json)      |
----------------------
null                  |
总数目:1

SELECT JSON_MERGE('[1,2]',NULL);
JSON_MERGE(json)      |
----------------------
null                  |
总数目:1

SELECT JSON_MERGE('1',NULL);
JSON_MERGE(json)      |
----------------------
null                  |
总数目:1