MariaDB JSON_MERGE_PRESERVE() 函数使用指南
在 MariaDB 中,JSON_MERGE_PRESERVE()
是一个内置函数,用于合并两个或多个 JSON 文档并返回结果。
JSON_MERGE_PRESERVE()
是已经弃用的 JSON_MERGE()
的同义词。您应该使用 JSON_MERGE_PATCH()
函数。
MariaDB JSON_MERGE_PRESERVE()
语法
这里是 MariaDB JSON_MERGE_PRESERVE()
的语法:
JSON_MERGE_PRESERVE(json1, json2, ...)
参数
json1
- 必需的。一个 JSON 对象文档。
json2
- 必需的。一个 JSON 对象文档。
如果您提供了错误数量的参数,MariaDB 将报告一个错误: ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_MERGE_PRESERVE'
。
返回值
MariaDB JSON_MERGE_PRESERVE()
函数返回一个由参数指定的多个 JSON 文档合并后的 JSON 文档。JSON_MERGE_PRESERVE()
按照如下规则合并多个 JSON 文档:
- 两个数组合并为一个数组,保留所有数组中的元素。
- 两个对象合并为一个对象,保留所有的键和值。
- 一个纯值会被包装成一个数组并作为数组进行合并
- 对象和数组合并时,会将对象包装到一个数组中并作为数组进行合并。
如果任意一个参数为 NULL
, JSON_MERGE_PRESERVE()
函数将返回 NULL
。
MariaDB JSON_MERGE_PRESERVE()
示例
这里列出了几个常见的 JSON_MERGE_PRESERVE()
用法示例。
合并数组
下面的演示了如何使用 JSON_MERGE_PRESERVE()
函数合并两个或多个 JSON 数组。
SELECT JSON_MERGE_PRESERVE('[1, 2]', '[2, 3]', '[3, 4, 5]');
输出:
+------------------------------------------------------+
| JSON_MERGE_PRESERVE('[1, 2]', '[2, 3]', '[3, 4, 5]') |
+------------------------------------------------------+
| [1, 2, 2, 3, 3, 4, 5] |
+------------------------------------------------------+
从结果我们可以看出所有数组中的所有元素都被保留下来,不管元素是否重复。并且元素的顺序保持和参数的顺序一致。
合并对象
下面的演示了如何使用 JSON_MERGE_PRESERVE()
函数合并两个或多个 JSON 对象。
SELECT JSON_MERGE_PRESERVE('{"x": 1}', '{"x": 2, "y": 3}');
输出:
+-----------------------------------------------------+
| JSON_MERGE_PRESERVE('{"x": 1}', '{"x": 2, "y": 3}') |
+-----------------------------------------------------+
| {"x": [1, 2], "y": 3} |
+-----------------------------------------------------+
这里, 因为 "x": 1
和 "x": 2
的键都是 "x"
,因此他们的值合并到一个数组中,即: [1, 2]
。
合并纯值
下面的演示了如何使用 JSON_MERGE_PRESERVE()
函数合并两个或多个 JSON 对象。
SELECT JSON_MERGE_PRESERVE('1', 'true', '"hello"', 'null');
输出:
+-----------------------------------------------------+
| JSON_MERGE_PRESERVE('1', 'true', '"hello"', 'null') |
+-----------------------------------------------------+
| [1, true, "hello", null] |
+-----------------------------------------------------+
这里,纯值在合并过程中包装成数组处理,因此,他们最终合并到一个数组中。
合并数组和对象
下面的演示了如何使用 JSON_MERGE_PRESERVE()
函数合并一个数组和一个对象。
SELECT JSON_MERGE_PRESERVE('{"x": 1}', '[1, 2]');
输出:
+-------------------------------------------+
| JSON_MERGE_PRESERVE('{"x": 1}', '[1, 2]') |
+-------------------------------------------+
| [{"x": 1}, 1, 2] |
+-------------------------------------------+
这里,合并对象和数组时,对象被自动包装成数组,因此,对象和原数组中的元素都被合并到一个新数组中。
结论
在 MariaDB 中,JSON_MERGE_PRESERVE()
是一个内置函数,用于合并两个或多个 JSON 文档并返回结果。