oracle获取数组中字符串的长度的函数,ORACLE 中字符串转换为数组的函数方法

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值