Postgres:选择一个复合字段,每个字段名称都作为一个值



我有一个名为"Address"的复合字段。它有字段:-街道名称-街道编号-区域

如果我进行正常选择:

select address from mytable where id = 1

我得到:

address => ("my street",1,earth)

我想要一种方法来选择这个并获得:

street_name => my street
street_number => 1
area => earth

我过去做过这样的事情:

select address.* from mytable where id = 1

但这行不通。有什么想法可以得到我想要的结果吗?

根据手册。如果你试图引用复合类型的子字段,你需要把名称放在括号里,否则解析器会认为你试图从"地址"表中获得一些东西

SELECT (address).* from mytable where id = 1

如果您只想选择元素,请执行以下操作:

select address.street_name, 
       address.street_number, 
       address.area 
  from mytable where id = 1

如果你想得到与你的问题完全一样的结果:

    select 'street_name =>' || address.street_name 
     from mytable where id = 1 union
    select 'street_number =>' || address.street_number 
     from mytable where id = 1 union
    select 'area=>' || address.area 
     from mytable where id = 1 

最新更新