oracle 多行合并 逗号分隔符,sql – 如何在Oracle中将多行合并为逗号分隔列表?...

参见英文答案 >

SQL Query to concatenate column values from multiple rows in Oracle                                    9个答案                            我有一个简单的查询:

select * from countries

具有以下结果:

country_name

------------

Albania

Andorra

Antigua

.....

我想返回结果在一行,所以像这样:

Albania, Andorra, Antigua, ...

当然,我可以编写一个PL / SQL函数来完成这项工作(我已经在Oracle 10g中做过),但是对于这个任务有一个更好的,最好是非特定于Oracle的解决方案(或者可能是一个内置的函数) ?

我通常使用它来避免子查询中的多行,所以如果一个人有超过一个公民身份,我不希望她/他在列表中重复。

更新:

我的功能看起来像这样:

CREATE OR REPLACE FUNCTION APPEND_FIELD (sqlstr in varchar2, sep in varchar2 ) return varchar2 is

ret varchar2(4000) := '';

TYPE cur_typ IS REF CURSOR;

rec cur_typ;

field varchar2(4000);

begin

OPEN rec FOR sqlstr;

LOOP

FETCH rec INTO field;

EXIT WHEN rec%NOTFOUND;

ret := ret || field || sep;

END LOOP;

if length(ret) = 0 then

RETURN '';

else

RETURN substr(ret,1,length(ret)-length(sep));

end if;

end;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值