oracle split 字符分割函數

oracle split 字符分割函數

oraclesplit字符串分割函數 

oracle本身沒有字符分割函數,一個字符串分割後,要以一個結果集的方式存放,所以需要配合table一起用,分割後的字符串是一個數組,在oracle中,可以先按如下,創建一個類型,該類型就是split裏要返回的類型,如下:

Java代碼

 收藏代碼

  1. create or replace type strsplit_type as table of varchar2(500);  



創建好類型了,下面是split函數的實現,引用到上面的類型.
Java代碼

 收藏代碼

  1. create or replace function str_split(p_value varchar2,  
  2.                                     p_split varchar2 := ',')  
  3.    
  4.  return strsplit_type  
  5.   pipelined is  
  6.   v_idx       integer;  
  7.   v_str       varchar2(500);  
  8.   v_strs_last varchar2(4000) := p_value;  
  9.   
  10. begin  
  11.   loop  
  12.     v_idx := instr(v_strs_last, p_split);  
  13.     exit when v_idx = 0;  
  14.     v_str       := substr(v_strs_last, 1, v_idx - 1);  
  15.     v_strs_last := substr(v_strs_last, v_idx + 1);  
  16.     pipe row(v_str);  
  17.   end loop;  
  18.   pipe row(v_strs_last);  
  19.   return;  
  20.   
  21. end str_split;  



查詢測試一下:
Java代碼

 收藏代碼

  1. select distinct a.* from table(str_split('PROVINCE_DCG,PROVINCE_SA,PROVINCE_AN,PROVINCE')) a  

.
返回結果:

1 PROVINCE_DCG
2 PROVINCE_SA
3 PROVINCE_AN
4 PROVINCE

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章