以下的文章是通过Oracle 字符串split的相关实际应用代码描述来剖析Oracle 字符串split的实际应用,以下就是相关内容的详细介绍。你如果是Oracle 字符串split的疯狂一族的话,以下的文章,你一定不要错过。
Oracle 字符串split的一种方法
一种方法是用函数:这里转帖网上摘抄的一个函数
CREATEORREPLACETYPEstr_splitISTABLEOFVARCHAR2(4000); CREATEORREPLACEFUNCTIONsplitstr(p_stringINVARCHAR2, p_delimiterINVARCHAR2) RETURNstr_split PIPELINED AS v_lengthNUMBER:=LENGTH(p_string); v_startNUMBER:=1; v_indexNUMBER; BEGIN WHILE(v_start<=v_length) LOOP v_index:=INSTR(p_string,p_delimiter,v_start); IFv_index=0 THEN PIPEROW(SUBSTR(p_string,v_start)); v_start:=v_length+1; ELSE PIPEROW(SUBSTR(p_string,v_start,v_index-v_start)); v_start:=v_index+1; ENDIF; ENDLOOP; RETURN; ENDsplitstr;
这里提供另外一种方法,利用Oracle 的正则相关函数实现:
selectdbms_lob.substr (regexp_substr('abc,def,ggg,1,2,3,4,5','[^,]+',1,x.n)) asplayer_guid fromduala, (selectrownumnfromdualconnectbyrownum<100)x
这里利用了函数 regexp_substr和connect by
其中rownum < 100 会连接限制split的次数 ‘[^,]+’为split拆分的正则表达式,这里为【,】逗号
上面sql语句结果是:
abc def ggg 1 2 3 4 5
相关文章
标签:Oracle