在postgresql中将行转换为字符串
Posted
技术标签:
【中文标题】在postgresql中将行转换为字符串【英文标题】:convert rows to string in postgresql 【发布时间】:2014-02-26 20:41:44 【问题描述】:表名是t1
。字段名称为name1
。 name1 有这样的值
-------------------------------------------+
+ name1 +
--------------------------------------------
| "a_2013,AcMaster,Master" |
| "b_2014,AcMaster,Master" |
| "c_2013,a_AcMaster,a_Master" |
| "d_2014,a_AcMaster,a_Master" |
|__________________________________________|
但我想得到这样的结果
master acmaster text
Master AcMaster a_2013,b_2014
a_Master a_Master c_2013,d_2014
所以我尝试这样
select (string_to_array(schemaname,',')) [3] as master,(string_to_array(schemaname,','))
[2] as acmaster,(string_to_array(schemaname,',')) [1] from appsetup.company2
c2,appsetup.company1 c1,appsetup.companygroup cg where c1.compno=c2.compno and
cg.compgroupno=c1.compgroupno and c1.compno in (3,2) group by
string_to_array(schemaname,',')) [3],
(string_to_array(schemaname,',')) [2],cg.compgroupno,schemaname order by
cg.compgroupno
但它的回报
master acmaster text
Master AcMaster ["a_2013","b_2014"]
a_Master a_Master ["c_2013","d_2014"]
如何得到我想要的结果?
我正在使用 Postgresql 9.3
【问题讨论】:
【参考方案1】:你可以试试这个:
select string_agg(name1, ',') as Name1s
from t1
string_agg
【讨论】:
如果您要聚合的列类型不是文本,则需要添加类型转换:select string_agg(name1::text, ',') as Name1s from t1
以上是关于在postgresql中将行转换为字符串的主要内容,如果未能解决你的问题,请参考以下文章
如何在 PostgreSQL 中将长 NUMERIC 整数转换为位字符串?
Postgresql/Greenplum中将数字转换为字符串TO_CHAR函数前面会多出一个空格
在更长的字符串中,如何在 PostgreSQL(和/或 Python 3)中将一个字符(例如,'a')和一个变音字符(例如,'U+030A')转换为单个字符('å')[重复]