VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

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)