PostgreSL json_populate_record和json_populate_recordset 函数

官方示例是这样的

select * from json_populate_record(null::myrowtype, '{"a": 1, "b": ["2", "a b"], "c": {"d": 4, "e": "a b c"}}');
select * from json_populate_recordset(null::myrowtype, '[{"a":1,"b":2},{"a":3,"b":4}]');

null::myrowtype是什么鬼???
网上好多教程是让你创建一张表,例如test,表结构和你的json结构一至,如下:

select * from json_populate_record(null::test, '[{"a":1,"b":2},{"a":3,"b":4}]');
select * from json_populate_recordset(null::test, '[{"a":1,"b":2},{"a":3,"b":4}]');

创建表麻烦且不便于管理.实际上可以用自定义类型代替

drop type if exists json_test_columns;
--根据json结构创建自定义类型
create type json_test_columns as (a int,b int,c int,d int);
--使用自定义类型输出
select * from json_populate_record(null::json_test_columns,'{"a":1,"b":2,"c":3,"d":4}');
select * from json_populate_recordset(null::json_test_columns,'[{"a":1,"b":2,"c":3,"d":4},{"a":2,"b":3,"c":4,"d":5}]');
--上面的压缩版本,目前还不支持,我个人觉得应该支持,
-- select * from json_populate_recordset(null::json_test_columns,'[[1,2,3,4],[2,3,4,5]]');
--变通方法
select value->>0 as a,value->>1 as b,value->>2 as c,value->>3 as c from (select * from jsonb_array_elements('[[1,2,3,4],[2,3,4,5]]')) as tmp;
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kmblack1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值