oraclesplit函数返回数组

oraclesplit函数返回数组

ID:34724883

大小:59.48 KB

页数:4页

时间:2019-03-10

oraclesplit函数返回数组_第1页
oraclesplit函数返回数组_第2页
oraclesplit函数返回数组_第3页
oraclesplit函数返回数组_第4页
资源描述:

《oraclesplit函数返回数组》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、oraclesplit函数返回数组最近在oracle中用到拆分字符串返回数组,一直头痛,因为在oracle中没有类似java中有split函数,所以要自己写。好不容搜到一个。那网上是到处都是这个代码。怎么找都是这个方法,我就用了。这个方法如下:(方法一)用到后面出现了bug。哎弄了一下午就给别人测试了一下bug。(方法一)根本就行不通。于是我就自己改写了。(方法二)大家如有需要的请参考方法二:如果用方法一来分隔字符串。比如我需要分隔的字符串为”a,b,c,d/e,f,g,h/i,j,k,l”分隔符为"/",分割后的数组,只有两组,最后一组消失了!如果我需要分隔的字符串为”a,b,c,d”分

2、隔符为"/",分隔后的数组,就没有问题。方法一(相信大家在网上已经搜到不少了,也看到不少了。)(方法一)CREATEORREPLACETYPEty_str_splitISTABLEOFVARCHAR2(4000);CREATEORREPLACEFUNCTIONfn_split(p_strINVARCHAR2,p_delimiterINVARCHAR2)RETURNty_str_splitISjINT:=0;iINT:=1;lenINT:=0;len1INT:=0;strVARCHAR2(4000);str_splitty_str_split:=ty_str_split();BEGINlen

3、:=LENGTH(p_str);len1:=LENGTH(p_delimiter);WHILEj=lenTHENEXIT;ENDIF;ELSEstr:=SUBSTR(p_str,i,j-i);i:=j+len1;str_split.EXTEND;str_split(str_split.COUNT):=str;ENDIF;ENDLOOP;R

4、ETURNstr_split;ENDfn_split;/测试:DECLARECURSORcISSELECT*FROMTABLE(CAST(fn_split('1;;12;;123;;1234;;12345',';;')ASty_str_split));rc%ROWTYPE;BEGINOPENc;LOOPFETCHcINTOr;EXITWHENc%NOTFOUND;DBMS_OUTPUT.put_line(r.column_value);ENDLOOP;CLOSEc;END;/ 结果:112123123412345方法二第一:先在TYPE里面建一个table注意TABLEOFVARCHAR2

5、(200);取决于你的字符串的长度。CREATEORREPLACETYPELW.T_VARRAYISTABLEOFVARCHAR2(200);/第二:在FUNCTION里面开始写方法两个参数P_LIST为传进去需要拆分的字符串P_SEP为选择根据什么字符来分隔CREATEORREPLACEFUNCTIONLW.STR_SPLIT(P_LISTINVARCHAR2,P_SEPINVARCHAR2)RETURNT_VARRAYISL_IDXPLS_INTEGER;V_LISTVARCHAR2(250):=P_LIST;RESVARCHAR2(250);JNUMBER(4):=1;CSTRT_V

6、ARRAY:=T_VARRAY();--声明集合BEGINLOOPL_IDX:=INSTR(V_LIST,P_SEP);IFL_IDX>0THENRES:=SUBSTR(V_LIST,1,L_IDX-1);CSTR.EXTEND(1);CSTR(J):=RES;V_LIST:=SUBSTR(V_LIST,L_IDX+LENGTH(P_SEP));ELSERES:=V_LIST;CSTR.EXTEND(1);CSTR(J):=RES;EXIT;ENDIF;J:=J+1;ENDLOOP;RETURNCSTR;ENDSTR_SPLIT;/

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。