一、实现需求
--编写一个函数实现字符串去重, 字符串是以逗号拼接的元素: a,a,b,c,d,a,c
--要求将重复的元素去重后返回: a,b,c,d
二、实现思路
1. 利用connect by 生成正则最大匹配值n序列
2. regexp_substr(str,'[^,]+',1,n)
3. 列去重, 然后wm_concat()
三、实现代码
--编写函数
create or replace function f_distinct (str in varchar2) return varchar2 as
v_string varchar2(100);
begin
with test1 as(
select distinct *
from(
select regexp_substr(str,'[^,]+',1,level) strr
from dual connect by level <= length(str) - length(replace(str,',','')) +1
) f
order by f.strr)
select wm_concat(t.strr) into v_string from test1 t;
return v_string;
end;
--测试调用
select f_distinct('a,a,b,c,d,a,c')from dual;