首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在Postgres中将一个类型拆分为多个列?

如何在Postgres中将一个类型拆分为多个列?
EN

Stack Overflow用户
提问于 2011-02-02 02:11:32
回答 4查看 4.7K关注 0票数 7

我使用以下代码从pl/python返回多个值:

代码语言:javascript
代码运行次数:0
运行
复制
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;

输出为:

代码语言:javascript
代码运行次数:0
运行
复制
column
(egg,4)

我想要做的是将输出拆分为两个单独的列。如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
column, column2
egg, 4

我该怎么做呢?我用谷歌搜索了1个小时却一无所获。因此,我希望在最后添加一些搜索关键字:多个返回值、多个结果、多个列、未嵌套列表、未嵌套集合

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-02-02 02:25:24

是的,这个的语法有点古怪,需要额外的括号:

代码语言:javascript
代码运行次数:0
运行
复制
select (make_pair('egg', 4)).name

要在仅调用函数一次的情况下从输出中获取多个组件,您可以使用子选择:

代码语言:javascript
代码运行次数:0
运行
复制
select (x.column).name, (x.column).value from (select make_pair('egg', 4) as column) x;
票数 8
EN

Stack Overflow用户

发布于 2011-02-02 15:35:35

代码语言:javascript
代码运行次数:0
运行
复制
SELECT * FROM make_pair('egg', 4);

以及一些变体:

代码语言:javascript
代码运行次数:0
运行
复制
 SELECT name, value FROM make_pair('egg', 4) AS x;


 SELECT a, b FROM make_pair('egg', 4) AS x(a,b);
票数 3
EN

Stack Overflow用户

发布于 2014-02-03 14:52:02

我找到的一个解决方案是使用join:

代码语言:javascript
代码运行次数:0
运行
复制
create table tmp (a int, b int, c int);
insert into tmp (a,b,c) values (1,2,3), (3,4,5), (5,12,13);
create type ispyth3 as (is_it boolean, perimeter int);
create function check_it(int, int, int) returns ispyth3 as $$
    begin
        return ($1*$1 + $2*$2 = $3*$3, $1+$2+$3);
    end
$$ language plpgsql;
select * from tmp join check_it(a,b,c) on 1=1;

这将返回:

代码语言:javascript
代码运行次数:0
运行
复制
 a | b  | c  | is_it | perimeter 
---+----+----+-------+-----------
 1 |  2 |  3 | f     |         6
 3 |  4 |  5 | t     |        12
 5 | 12 | 13 | t     |        30
(3 rows)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4866321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档