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)