【问题标题】:Use function result as columns in query with PostgreSQL使用函数结果作为 PostgreSQL 查询中的列
【发布时间】:2012-10-11 21:53:37
【问题描述】:

我正在使用 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

错误信息:

ERROR: syntax error at or near "."
SQL state: 42601

【问题讨论】:

  • 当出现故障时,提供错误消息是值得的。
  • @CraigRinger :很好。我会更新问题。

标签: postgresql postgresql-9.1


【解决方案1】:

你需要一组额外的括号:

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

【讨论】:

  • 谢谢!所以,很简单,但我一辈子都想不通(也想不出谷歌找到答案的正确术语)!
猜你喜欢
  • 2012-11-25
  • 2016-06-10
  • 1970-01-01
  • 1970-01-01
  • 2019-05-31
  • 2020-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多