VastbaseG100

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

Menu

JSON_OBJECT

功能描述

JSON_OBJECT函数接受一个键值对(可以为空)列表,并返回一个包含这些键值对的JSON对象。

注意事项

  • 该功能仅在数据库兼容模式为MySQL时支持(即数据库初始化时指定DBCOMPATIBILITY='B')。
  • 由于 JSON 对象中的所有键为字符串,因此JSON_OBJECT函数会将不是字符串类型的key转为字符串类型。为了保证程序的稳定性,我们一般使用字符串类型的key。
  • key不能为 NULL 且入参个数应为偶数个。

语法格式

JSON_OBJECT([key, val[, key, val] ...])

参数说明

key, val

键值对。

示例

1、创建测试表。

create table table_1159947(data json);
create table table_1159947_1(name varchar(30),address varchar(20),tel int);
create table table_1159947_2(data json, my_text text);

2、向table_1159947表中插入数据并查询结果。

insert into table_1159947 values (json_object('names','David','address','Beijing','Tel',1324053333,'names','Mike'));
select * from table_1159947;

返回结果为:

                            data
-------------------------------------------------------------
 {"Tel": 1324053333, "names": "David", "address": "Beijing"}
(1 row)

3、向table_1159947_1表中插入数据。

insert into table_1159947_1 values ('Jack','Zhongguo',1323394);
insert into table_1159947_1 values ('Tobbo','Meiguo',132333394);
insert into table_1159947_1 values ('Hnana','Riben',3403234);

4、在INSERT语句中使用JSON_OBJECT函数并查询table_1159947表数据。

insert into table_1159947 select json_object('name',name,'address',address,'tel',tel) from table_1159947_1;
select * from table_1159947;

返回结果为:

                            data
-------------------------------------------------------------
 {"Tel": 1324053333, "names": "David", "address": "Beijing"}
 {"tel": 1323394, "name": "Jack", "address": "Zhongguo"}
 {"tel": 132333394, "name": "Tobbo", "address": "Meiguo"}
 {"tel": 3403234, "name": "Hnana", "address": "Riben"}
(4 rows)

5、向table_1159947_2表中插入数据。

insert into table_1159947_2 values('{"abc": 1234}', 'MyText');

6、在SELECT语句中使用JSON_OBJECT函数。

select json_object(data, my_text) from table_1159947_2;

返回结果为:

          json_object
-------------------------------
 {"{\"abc\": 1234}": "MyText"}
(1 row)