oracle自定义拆分功能实例详细解决方案

oracle自定义拆分功能实例详细解决方案
oracle自定义拆分功能

Oracle不提供拆分功能,但你可以建立一个函数来实现这个功能。例如,ABC DEFG hijkl nmopqr stuvw XYZ,分离器是一个空间,但空间的数量是不固定的。

源代码:
创建或替换型ty_str_split是表VARCHAR2(4000);

创建或替换功能(fn_var_split
p_str在空,
p_delimiter在空

返回ty_str_split

j = 0;
镜头int = 0;
STR VARCHAR2(4000);
str_split ty_str_split:= ty_str_split();
v_str VARCHAR2(4000):= RTrim(LTrim(p_str,p_delimiter),p_delimiter);
开始
莱恩:=长度(v_str);

当莱恩0

J:=仪器(v_str,p_delimiter,1);

如果j=0
然后
STR:= substr(v_str,1);
= 0;
str_split.extend;
str_split(str_split。计数):= str;
其他的
STR:= substr(v_str,1,J 1);
v_str:= LTrim(LTrim(v_str,STR),p_delimiter);
莱恩:=长度(v_str);
str_split.extend;
str_split(str_split。计数):= str;
最后如果;
结束循环;

返回str_split;
最后fn_var_split;
/

测试:

结果uff1a

十二
一百二十三
一千二百三十四
一万二千三百四十五
声明
光标C

SELECT * FROM表(投(fn_var_split(';1;12;123;1234;;;;;;;;12345;',';')作为ty_str_split);
R C %ROWTYPE;
开始
Open C;

把C接到R;
退出时,发现C %;
dbms_output.put_line(r.column_value);
结束循环;
关闭C;
结束;
/

谢谢你的阅读。我希望你能帮助你,谢谢你对这个站的支持。

tag:自定义解决方案拆分实例功能

相关内容