将函数结果用作PostgreSQL查询中的列

将函数结果用作PostgreSQL查询中的列,postgresql,postgresql-9.1,Postgresql,Postgresql 9.1,我使用的是PostgreSQL 9.1,假设我在PostgreSQL中有一个类型: CREATE TYPE sticker AS ( customer_id integer, customer_machine_id integer, ); 我有一个名为get_sticker的plpgsql,它返回类型标签 我可以做得很好: select get_sticker(a_value), * from foo_bar; 但是,这会以元组的形式返回结果(这完全有道理)。但是,如何将(基

我使用的是PostgreSQL 9.1,假设我在PostgreSQL中有一个类型:

CREATE TYPE sticker AS (
    customer_id integer,
    customer_machine_id integer,
);
我有一个名为get_sticker的plpgsql,它返回类型标签

我可以做得很好:

select get_sticker(a_value), * from foo_bar;
但是,这会以元组的形式返回结果(这完全有道理)。但是,如何将(基本上是解包)转换为列呢

它看起来像是下面这样,但它失败了

select get_sticker(a_value).*, * from foo_bar;  -- <<<< FAIL

您需要一组额外的括号:

select (get_sticker(a_value)).*, * from foo_bar;

当某件事情失败时,值得提供错误信息。@CraigRinger:很好。我将更新问题。谢谢!所以,很简单,但我一辈子都搞不懂(也弄不懂用谷歌搜索答案的正确术语)!
select (get_sticker(a_value)).*, * from foo_bar;