ORACLE 中字符串转换为数组的函数方法

来源:互联网 发布:淘宝怎么用版权投诉 编辑:程序博客网 时间:2024/05/21 09:34

CREATE OR REPLACE TYPE splitArray AS TABLE OF VARCHAR2(2048);--------字符串拆分函数CREATE OR REPLACE FUNCTION fu_split_Array (     str IN VARCHAR2,--输入的字符串     split_param IN VARCHAR2 --拆分的参数)RETURN splitArray       IS   split_array  splitArray := splitArray();--定义拆分数组   t_temp VARCHAR2(2048);   t_begin number :=0;--循环变量开始参数   t_end number := 1;--截取字符长度的开始位置结束参数   t_length number :=0;--字符串的长度   t_paramLength number :=0;--传入字符串截取参数的长度BEGIN  t_length := length(str);--获取传入字符的长度  t_paramLength := length(split_param);--截取参数的长度  --在temp 变量中查找 split_param 检索当前split_param字符串的位置 如果没有找到则返回0    WHILE  t_begin < t_length  LOOP      dbms_output.put_line('截取='||t_begin);      --起始位置从1开始截取匹配split_param字符串并返回他所在的位置      t_begin := instr(str,split_param,t_end);       /* IF t_begin = 0 THEN           Dbms_Output.put_line('见到了');            t_begin := t_length;            t_temp := SUBSTR (str, t_end);            split_array.extend;            split_array (split_array.count) := str;            IF t_end >= t_length            THEN             Dbms_Output.put_line('见到了11111111111');                EXIT;            END IF;        ELSE*/        --判断当前是否长度超出原字符串长度 如果超出则不执行            IF t_end >= t_length            THEN             --Dbms_Output.put_line('见到了11111111111');                EXIT;            END IF;            t_temp := SUBSTR(str,t_end,t_begin-t_end);            --dbms_output.put_line(t_temp);            t_end := t_begin+t_paramLength;            split_array.extend;            split_array(split_array.count) := t_temp;        /*END IF;*/      END LOOP;    RETURN split_array;END fu_split_Array;

--测试

SELECT fu_split_Array('A,B,C,D,E,',',') FROM DUAL;

备注 :如果你的字符串最后一位含有分隔符例如“,”之类的标示 则使用红色未注释部分

如果你的字符串最后一位没有标记 则使用橘色注释部分代码 则返回所有的字符串你就需要重新截取最后一位了目前

我只了解这些 还在测试阶段 完善了全部黏贴出来 谢谢!希望对您有帮助!

 

 

0 0
原创粉丝点击