PostgreSQL查询:将JSON数组对象转为列的实现方法
PostgreSQL 展开JSON数组查询语句
要把嵌套在JSON字段里的地址数组拆成单行记录,用json_array_elements函数就能实现——它可以把JSON数组拆分成多行独立的JSON对象,再从中提取需要的字段。
最终查询语句
SELECT a.id, a.data->>'name' AS name, addr->>'city' AS city, addr->>'street' AS street FROM addresses a, json_array_elements(a.data->'addresses') AS addr;
语句说明
a.data->>'name':从dataJSON字段里提取name的文本值(->>用来获取纯文本结果,不会返回带引号的JSON格式字符串)。json_array_elements(a.data->'addresses') AS addr:把data中的addresses数组展开,数组里的每个元素都会变成一行的addr对象。addr->>'city'和addr->>'street':从展开后的addr对象里分别提取城市和街道的文本值。
执行这条语句后,就能得到你需要的扁平结构结果。
内容的提问来源于stack exchange,提问作者David Soroko
相关产品推荐
相关产品推荐

