postgresql 行列互转函数

关系型数据库的行列转换函数在实际应用中是相当普遍。postgresql 作为一款优秀的开源数据库,提供相关的转换函数是必须的。

列=》行

使用 string_agg 函数

with tmp_t0 as (
    select 'A'::varchar as c1 union all
    select 'B'::varchar as c1 union all
    select 'C'::varchar as c1 
)
select string_agg(c1,',') 
  from tmp_t0
  ; 

 string_agg 
------------
 A,B,C
(1 row)

使用 array_agg 函数

with tmp_t0 as (
    select 'A'::varchar as c1 union all
    select 'B'::varchar as c1 union all
    select 'C'::varchar as c1 
)
select array_agg(c1) 
  from tmp_t0
  ; 

 array_agg 
-----------
 {A,B,C}
(1 row)

行=》列

使用regexp_split_to_table函数

with tmp_t0 as (
    select 'A,B,C,D'::varchar as c1 
)
select regexp_split_to_table(c1,',') 
  from tmp_t0
  ;

 regexp_split_to_table 
-----------------------
 A
 B
 C
 D
(4 rows)

参考:
https://www.postgresql.org/docs/9.6/static/functions-aggregate.html
https://www.postgresql.org/docs/9.6/static/functions-string.html

转载于:https://www.cnblogs.com/ctypyb2002/p/9792965.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值