[My Function]Oracle删除同一字段内 分隔符 分割 的相同内容
主要功能:删除同一字段内 分隔符 分割 的相同内容
基本用法:function_del_str(字段,分割符)
Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0
Connected as yzreal
SQL> select function_del_str('200902880、200902880、200902880、200902882、200902883','、') from dual;
FUNCTION_DEL_STR('200902880、2
--------------------------------------------------------------------------------
200902883、200902882、200902880
SQL:
View Code
1 CREATE OR REPLACE FUNCTION function_del_str(input_str in VARCHAR2,input_char in VARCHAR2) 2 RETURN VARCHAR2 IS 3 -----删除某字段内的重复内容(以input_char分隔) 4 output_str VARCHAR2(4000); 5 li_count NUMBER; 6 temp_str VARCHAR2(4000); 7 temp_str1 VARCHAR2(4000); 8 li_count2 VARCHAR2(4000); 9 li_regstr VARCHAR2(4000); 10 temp_char VARCHAR2(4000); 11 BEGIN 12 temp_str:=''; 13 temp_str1:=''; 14 select replace(input_char,'''','') into temp_char from dual; 15 li_regstr := '[^'||temp_char||']+'; 16 select (length(input_str||input_char)-length(replace(input_str||input_char,input_char,'')))/length(input_char) into li_count from dual; 17 18 IF li_count = 1 THEN 19 temp_str := input_str; 20 END IF; 21 IF li_count >1 THEN 22 FOR cur IN (SELECT distinct( REGEXP_SUBSTR(input_str , li_regstr , 1, LEVEL, 'i')) STR FROM DUAL CONNECT BY LEVEL <= LENGTH(input_str ) - LENGTH(REGEXP_REPLACE(input_str , input_char, ''))+1) loop 23 temp_str1:= cur.str||input_char||temp_str1; 24 end loop; 25 select RTRIM(temp_str1,input_char) into temp_str from dual; 26 END IF; 27 output_str:=temp_str; 28 RETURN output_str; 29 END;


浙公网安备 33010602011771号