Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >如何在Postgres中将一个类型拆分为多个列?

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

Stack Overflow用户
提问于 2011-02-01 18: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-01 18: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 07: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 06: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

复制
相关文章

相似问题

在Postgres中将包含Json值的列拆分为多个列

1185

在Postgres中将列拆分为多行

32

如何在r中将一个SQL列拆分为多个列

320

如何在字典中将元组拆分为多个列

12

如何在mySQL中将值拆分为多个列

34
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档