postgresql - 使用函数结果作为 PostgreSQL 查询中的列

标签 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;

但是,这会以元组的形式返回结果(这完全有道理)。但是,我怎样才能转换(基本上解压缩)到列?

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

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

错误信息:

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

最佳答案

你需要一组额外的括号:

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

关于postgresql - 使用函数结果作为 PostgreSQL 查询中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12849132/

相关文章:

ejb-3.0 - 如何访问EJB3中实体类内部的EntityManager

sql - PostgreSQL - CTE upsert 返回修改后的行

mysql - 有限制的分组是如何工作的

node.js - 正确的 Sequelize 流程以避免重复行?

arrays - Postgres - 循环遍历字符串条目并创建连接表

PostgreSQL 9.x - pg_read_binary_file & 将文件插入 bytea

php - 如何将自定义类型数组传递给 Postgres 函数

sql - PostgreSQL - SELECT DISTINCT、ORDER BY 表达式必须出现在选择列表中

postgresql - 字段显示为 null 或空字符串,但我无法选择它

sql - Postgresql批量插入或忽略