如何从PostgreSQL的json_to_recordset()函数获取完整记录元素?
在PostgreSQL中将JSON数组拆分为单行完整JSON记录
你可以直接使用json_array_elements()函数实现需求,这个函数会把JSON数组里的每个元素单独拆成一行,并且完整保留每个元素的JSON结构,不需要提前指定字段(完美适配你这种字段格式不统一的场景)。
基础用法(假设你的表名为your_table,JSON列为data)
SELECT elem AS full_json_record FROM your_table, json_array_elements(data) AS elem;
用你的示例数据测试
如果直接用你提供的JSON数组做测试,执行以下SQL就能得到每行对应一个完整JSON对象的结果:
SELECT elem AS full_json_record FROM json_array_elements('[{"id":"1","type":"user","name":"AV","displayName":"Aviral","Company":"ABC","Age":34}, {"id":"2","type":"user","name":"Ram","displayName":"Ram","City":"Jaipur"}]'::json) AS elem;
补充说明
- 如果你的列是
jsonb类型(PostgreSQL推荐的二进制JSON类型),只需把函数换成jsonb_array_elements()即可,用法完全一致。 - 和你之前用的
json_to_recordset()不同,json_array_elements()不需要定义固定的字段结构,直接输出数组里的完整JSON元素,刚好匹配你把每个完整JSON记录作为单列存储的需求。
内容的提问来源于stack exchange,提问作者NIKHIL SUTHAR
相关产品推荐
相关产品推荐

