oracle自定义函数:将字符串中的特殊字符转化为逗号
create or replace function F_SPLIT_CONDITION(START_STRING VARCHAR2, V_FLAG VARCHAR2)
/**
*将给出的START_STRINGN字符串按V_FLAG替换为逗号分隔的字符串
*例如:12-34-56 替换为'12','34','56'
*使用loop循环实现
*/
RETURN VARCHAR2 IS
L_STRING VARCHAR2(100);--输出字符串
L_INDX INTEGER; --特殊字符
V_STRING VARCHAR2(100) := START_STRING; --原字符串
begin
L_STRING := '''';--初始化为一个'号
LOOP
L_INDX := INSTR(V_STRING,V_FLAG);--找到特殊字符的位置
IF L_INDX > 0 THEN
L_STRING := L_STRING||SUBSTR(V_STRING,1,L_INDX - 1);--将第一组数字剪切出来,此时数字为'12
V_STRING := SUBSTR(V_STRING,L_INDX + LENGTH(V_FLAG));--将12-剪切掉
L_STRING := L_STRING||''',''';--在'12后面加上',此时L_STRING为'12'
ELSE
L_STRING := L_STRING||V_STRING;--最后一个不用再进行剪切,直接加在最后面就可以了
EXIT;
END IF;
END LOOP;
L_STRING := L_STRING||'''';--加上最后的'
RETURN(L_STRING);--返回最后拼接成功的字符
end F_SPLIT_CONDITION;