如何显示 PostgreSQL 函数返回的列标题?

Posted

技术标签:

【中文标题】如何显示 PostgreSQL 函数返回的列标题?【英文标题】:How to display column headers returned by PostgreSQL function? 【发布时间】:2017-06-14 03:05:56 【问题描述】:

我有以下 PostgreSQL 函数,它从一个表中返回多个列:

CREATE OR REPLACE FUNCTION userbyid(id integer)
RETURNS TABLE(id int, username character varying(30), email character varying(254), last_login timestamp with time zone) AS
$$
SELECT
    id,
    username,
    email,
    last_login
FROM
    auth_user
WHERE
    id = $1;
$$
LANGUAGE 'sql';

它返回的结果是这样的:

                        userbyid
--------------------------------------------------------------
(2, smith, smith@example.com, "2017-06-04 19:47:49.472259+00")

是否可以使用正确的列标题显示输出,如下所示:

id         username       email               last_login
--------------------------------------------------------------
2          smith          smith@example.com   2017-06-04

我正在查看 CREATE FUNCTION 文档页面,但不清楚如何执行此操作。我也在网上搜索过,也没有看到讨论这个的文章。

【问题讨论】:

【参考方案1】:

FROM 子句中使用您设置的返回函数

SELECT * FROM userbyid(1);

相对

SELECT userbyid(1);

这里是dbfiddle演示

样本输出:

编号 |用户名 |电子邮件 |上次登录 ----+----------+--------------------+-------------- ---------- 1 |用户1 | user1@example.com | 2017-06-13 12:00:00-04

【讨论】:

【参考方案2】:

您可以在查询中使用“as”。 选择id作为id,username作为用户名....

【讨论】:

“as”对我有用:SELECT ar.invnumber as "Inv No", ar.amount as "Inv Total", ar.transdate as "Inv Date", customer.name as "Customer", acc_trans.amount as "Amount Recd", acc_trans.transdate as "Date Recd"

以上是关于如何显示 PostgreSQL 函数返回的列标题?的主要内容,如果未能解决你的问题,请参考以下文章

PostgreSQL:如何访问匿名记录上的列

如何在 Postgresql 中获取结合 old.variablename 的列数据?

PostgreSQL 函数中的列引用不明确

PostgreSQL。选择与聚合函数中的值相关的列

H2 vs PostgreSQL 生成的具有函数的列

如何在 PostgreSQL 中的函数内返回 SELECT 的结果?