如何在 Postgres 中将一个类型拆分为多个列?
我有以下代码从 pl/python 返回多个值:
CREATE TYPE named_value AS (
name text,
value integer
);
CREATE or replace FUNCTION make_pair (name text, value integer)
RETURNS named_value
AS $$
return [ name, value ]
$$ LANGUAGE plpythonu;
select make_pair('egg', 4) as column;
输出是:
column
(egg,4)
我想要做的是将输出分成两个单独的列。像这样:
column, column2
egg, 4
我该怎么做?谷歌搜索了 1 个小时,我一无所获。所以我希望最后添加一些搜索关键词: 多个返回值 多个结果 多列 取消嵌套列表 取消嵌套集合
I have the following code to return multiple values from pl/python:
CREATE TYPE named_value AS (
name text,
value integer
);
CREATE or replace FUNCTION make_pair (name text, value integer)
RETURNS named_value
AS $
return [ name, value ]
$ LANGUAGE plpythonu;
select make_pair('egg', 4) as column;
The output is:
column
(egg,4)
What I want to do is to split the output into two separate columns. Like this:
column, column2
egg, 4
How do I do this? Googled for 1 hour got me nowhere. So I hope I will add some search keywords in the end:
multiple return values multiple results multiple columns unnest list unnest set
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
是的,这个语法有点古怪,需要额外的括号:
要从输出中获取多个组件,同时仅调用该函数一次,您可以使用子选择:
Yeah, the syntax for this is a bit wacky, requiring extra parentheses:
To get multiple components from the output while only invoking the function once, you can use a sub-select:
和一些变体:
and some variants:
我发现的一个解决方案是使用 join:
这返回:
A solution I found was to use join:
This returns:
以下是避免运行该函数两次并同时避免子查询的工作代码。
The following is working code to avoid having to run the function twice and at the same time avoid a subquery.