1、拼接函数: distinct_listagg
2、使用说明,对于oracle原生的listagg函数,进行拼接的时候,会拼接重复项,诸如 : a,b,c,a
其中a出现多次,为了过滤掉第二项a ,参考并撰写了以下函数源代码
create or replace function distinct_listagg
(listagg_in varchar2,
delimiter_in varchar2)
return varchar2
as
hold_result varchar2(4000);
begin
select rtrim( regexp_replace( (listagg_in)
, '([^'||delimiter_in||']*)('||
delimiter_in||'\1)+($|'||delimiter_in||')', '\1\3'), ',')
into hold_result
from dual;
return hold_result;
end;