在 postgres 中,我有一个自定义函数,可以连接名字和姓氏。
CREATE FUNCTION full_name(u users) RETURNS varchar
LANGUAGE plpgsql VOLATILE
AS $$
BEGIN
RETURN CONCAT_WS(' ', u.first_name, u.last_name);
END;
$$;
如果我不必设置列名的名称并且它由函数 eg 确定,那就太好了。
例如。这里我不得不说列名是full_name
SELECT
full_name(users) as full_name
但如果它自动将其命名为 full_name 就更好了
SELECT
full_name(users)
这可以在自定义函数中设置吗?
最佳答案
由于函数参数是表的名称,因此您不必传递它。
你可以这样调用它:
select users.full_name
from users;
请注意,您必须在函数名前加上表名。您也可以使用别名,但您仍然需要前缀。
select u.full_name
from users u;
在这种情况下,结果集中的列将被命名为full_name
(函数的名称)
顺便说一句:您不需要 PL/pgSQL 来实现该功能。为此,普通 SQL 可能会更快。特别是当您将它声明为 stable
而不是 volatile
时 - 它可以内联并且消除了调用函数的开销。
关于postgresql - postgres函数返回的特定列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35389343/