JSON_MERGE_PRESERVE
功能描述
JSON_MERGE_PRESERVE函数用于合并两个及以上的JSON文档,相同键值合并为一个数组。
注意事项
- 该功能仅在数据库兼容模式为MySQL时支持(即数据库实例初始化时指定DBCOMPATIBILITY='B')。
- 如果任何参数为NULL,则返回NULL。
- 合并规范:
- 若相邻的两个JSON参数一个为scalar或对象,一个为数组。将scalar或对象,作为数组元素,按照参数的先后顺序,加入数组参数中,合并为单个数组。
- 若相邻的两个JSON参数都是scalar或对象。将scalar或对象按照参数的先后顺序,合并为单个数组。
- 若相邻的两个JSON参数都是数组。将两个数组的各个元素,按照参数的先后顺序,合并为单个数组。
- 若相邻的两个JSON参数都是对象。将两个对象的各个成员,按照key的顺序,合并为单个对象。
- 合并JSON后的对象成员返回值,全部符合key的顺序。
标量(scalar):单一的数字、bool、string、null都可以叫做标量。
语法格式
JSON_MERGE_PRESERVE(json_doc, json_doc[, json_doc] ...)
参数说明
json_doc
JSON文档,它可以是一个JSON字符串,或者一个JSON列。
示例
SELECT json_merge_preserve('[1,{"a":"abc"}]', '["b",false]');
SELECT json_merge_preserve('{"b":"abc"}', '{"a":"jks"}');
SELECT json_merge_preserve('{"a":"abc"}', '[1,true,null]');
SELECT json_merge_preserve(NULL, '1');
返回结果为:
json_merge_preserve
-------------------------------
[1, {"a": "abc"}, "b", false]
(1 row)
json_merge_preserve
--------------------------
{"a": "jks", "b": "abc"}
(1 row)
json_merge_preserve
-------------------------------
[{"a": "abc"}, 1, true, null]
(1 row)
json_merge_preserve
---------------------
(1 row)