Oracle的splitITeye - 凯时娱乐

Oracle的splitITeye

2019年02月18日08时14分12秒 | 作者: 昆纬 | 标签: 函数,数组,结构 | 浏览: 2328

首要,Oracle是没有split函数的,由于Oracle看不到和数组相似的结构,因而这儿参照网上的fn_split的函数做了点改善,下面的能够直接用
网上的fn_split如同过滤掉null值,这儿做了点改善,请注意差异


1.create or replace type ty_str_split is table of varchar2 (4000); 
2.create or replace function fn_split (p_str in varchar2, p_delimiter in varchar2) 
3. return ty_str_split 
4.is 
5. j int := 0; 
6. i int := 0; 
7. getLen int :=0; 
8. len int := 0; 
9. len1 int := 0; 
10. str varchar2 (4000); 
11. str_split ty_str_split := ty_str_split (); 
12. v_isFound number:=0; 
13.begin 
14. if p_delimiter is not null then 
15. select instr(p_str,p_delimiter) into v_isFound from dual; 
16. if v_isFound=0 then没找到 
17. str_split.extend; 
18. str_split (str_split.count) := p_str; 
19. else 
20. len := length (p_str); 
21. len1 := length (p_delimiter); 
22. while j = len 
23. loop 
24. i:=i+1; 
25. j := instr (p_str, p_delimiter,i); 
26. getLen:=j-i; 
28. if j = 0 then 
29. str := substr (p_str, i); 
30. str_split.extend; 
31. str_split (str_split.count) := str; 
32. exit; 
33. else 
34. str := substr (p_str, i, getLen); 
35. str_split.extend; 
36. str_split (str_split.count) := str; 
37. i := j-1 + len1; 
38. end if; 
39. end loop; 
40. end if ; 
41. else 
42. str_split.extend; 
43. str_split (str_split.count) := p_str; 
44. end if ; 
45. return str_split; 
46.end fn_split; 
48.详细用法 
49.select t.column_value,rownum row_ from 
50.table( 
51. cast ( 
52. fn_split (1,2,3,4,5,,7,,, ,) as ty_str_split 
53. ) 
54.) t 


转载:http://zyj0021.iteye.com/blog/816633
版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表凯时娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章

阅读排行

  • 1

    Oracle的splitITeye

    函数,数组,结构
  • 2
  • 3

    oracle number数据类型csdn

    数字,数据,声明
  • 4

    MySql记载mingxing

    账户,权限,运用
  • 5
  • 6

    数据库发掘入门快报

    数据库,办理,内容
  • 7

    彻底卸载Oracle的小技巧csdn

    效劳,注册表,主键
  • 8

    SQLITE源码分析(9)wangyi

    类型,整数,符号
  • 9
  • 10