Postgresql返回存储在表中的类型的变量

时间:2017-04-26 16:27:35

标签: postgresql types compositetype

我目前正在开发应用,但在尝试在使用自定义类型的表上创建查询时遇到了问题。

这是一个示例表和类型,

CREATE TYPE address AS (
  street varchar(40),
  city   varchar(25),
  zip    varchar(5)
);
CREATE TABLE houses (
  id SERIAL PRIMARY KEY,
  address address
);

我需要检索包含存储在表格中的所有城市的列表。 这就是我试图做的事情:

SELECT address.city
FROM houses
GROUP BY address.city

它将address.city检测为表格。有没有办法在PostgreSQL中做我想做的事情?

1 个答案:

答案 0 :(得分:1)

我不会在表格中使用类似的复合类型。但你仍然可以这样做,使用括号。

SELECT (address).city
FROM houses
GROUP BY (address).city

来自the docs

  

要访问复合列的字段,可以写一个点和字段名称,就像从表名中选择一个字段一样。 实际上,它非常类似于从表名中选择您经常使用括号来避免混淆解析器。

相反,我会使用jsonb。或者,如果您要使用复合类型,则应使用PostGIS中的stdaddr