Oracle字符串拆分精灵
一.创建数组类型
Sql代码
createorreplacetypet _ ret _ tableistableofvarchar2(512 )。
二、建立字符串划分函数
Sql代码
createorreplacefunctionf _ split _ string (as _ str varchar 2,
AS_SPLIT VARCHAR2)
RETURN T_RET_TABLE IS
-- Author : Guomm
- created :2013/5/221336038336046
-- Purpose :字符串拆分
-- Params
-- AS_STR :处理的字符串
-- AS_SPLIT :字符串分隔符
V_OUT T_RET_TABLE;
v_tmpvarchar2(4000;
v_ElementVarchar2(4000;
比根
V_TMP :=AS_STR;
V_OUT :=T_RET_TABLE (;
-如果有匹配的分隔符
whileinstr(v_tmp,AS_SPLIT )0 LOOP
v_element:=substr(v_tmp,1,instr ) v_tmp,AS_SPLIT )- 1 );
v_tmp:=substr(v_tmp,
instr(v_tmp,AS_SPLIT )长度(AS_SPLIT ),
长度(v _ tmp );
v_out.extend(1;
v_out(v_out.count ) :=V_ELEMENT;
结尾环路;
IF V_TMP IS NOT NULL THEN
v_out.extend(1;
v_out(v_out.count ) :=V_TMP;
结束If;
RETURN V_OUT;
END F_SPLIT_STRING;
OK,这个功能已经实现了。
三.呼叫
Sql代码
选择*从表(f _ split _ string (' 1,2,3,4,5,6 ',') )
DECLARE
V_ARRAY T_RET_TABLE;
比根
v _ array :=f _ split _ string (' 1,2,3,4,5,6 ',',');
FOR I IN 1.V_ARRAY.COUNT LOOP
DMS_output.put_line(v_array(I ) );
结尾环路;
结束;