oracle存储过程实现的split函数,分隔字符串
oracle存储过程实现的split函数,分隔字符串
[sql]
PROCEDURE SPLIT_STRING_SP(P_INSTR IN VARCHAR2,--传入字符串,逗号分隔,输入参数
P_STRS OUT VARCHAR2,--截取第1个值之后剩下的字符串,输出参数
P_CURR OUT VARCHAR2, --截取到的第1个值,输出参数
[sql]
P_CHAR IN VARCHAR2 --以什么字符为分隔字符
[sql]
) IS
CURR_LOCA NUMBER;
BEGIN
CURR_LOCA := INSTR(P_INSTR, P_CHAR, 1, 1);
P_CURR := SUBSTR(P_INSTR, 0, CURR_LOCA - 1);
IF P_CURR IS NULL THEN
P_CURR := P_INSTR;
P_STRS := NULL;
ELSE
P_STRS := SUBSTR(P_INSTR, CURR_LOCA + 1);
END IF;
END;
使用循环调用,例如:
[sql]
v_str:='1,2,3,4,5,6';
v_res_str:='';
v_current:='';
loop
EXIT WHEN v_str IS NULL;
SPLIT_STRING_SP(v_str, v_res_str, v_current, ',');
v_str:=v_res_str;
--使用v_current进行操作
end loop;