有谁知道Oracle的函数WM_CONCAT,在PostgreSQL中具有相同功能的函数名称是什么? 5

 我来答
sxdtgsh
2013-04-03 · TA获得超过2221个赞
知道小有建树答主
回答量:913
采纳率:75%
帮助的人:804万
展开全部
--一下信息来源于 http: //hi.baidu.com/bsdgo/item/b7fed4822e895f16c21627cf
postgresql如何实现group_concat功能
MySQL有个聚集函数group_concat, 它可以按group的id,将字段串联起来,如表:
id name
---------------
1 A
2 B
1 BSELECT id, group_concat(name) from xxx group by id
得出的结果为id group_concat(name)
---------------------------
1 A,B
2 BPostgreSQL没有现成的group_concat聚集函数,但可以自定义聚集函数,所以可以容易的实现这功能。自定义聚集函数array_accumCREATE AGGREGATE array_accum (anyelement)
(
sfunc = array_append, -- 每行的操作函数,将本行append到数组里
stype = anyarray, -- 聚集后返回数组类型
initcond = '{}' -- 初始化空数组
);参数anyelement匹配任何类型,聚集后返回数组类型anyarray,该函数的功能是将每行的记录附加到数组里。SELECT id, array_accum(name) from xxx group by id
得出的结果为id array_accum(name)
---------------------------
1 {'A','B'}
2 {'B'}array_accum(name)为数组类型,再用array_to_string函数将数组转换为字符串SELECT id, array_to_string(array_accum(name),',') from xxx group by id
就可以得到group_concat相同的结果了。但MySQL的group_concat的功能很强,比如可以排序等,postgresql若要模拟它,只能自己定义一个增强型的函数比如array_to_string_plus,可以对数组进行排序后再concat,这里就不用多述,留给各位动脑筋吧。
百度网友64790be1
推荐于2018-03-22 · TA获得超过164个赞
知道答主
回答量:79
采纳率:100%
帮助的人:73.8万
展开全部
string_agg(text,text), 第一个参数是合并的字段,第二个参数是连接符。是聚合函数。
select aaa,string_agg(bbb,',')
from test
group by aaa
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式