看到返回TABLE的函數,還有不錯的分解字串。

oracle的split函數

oracle   2008-07-22 14:18   閱讀1488   評論0  
字號:    

PL/SQL 中沒有split函數,需要自己寫。

  代碼:

 

create or replace type type_split as table of varchar2(50);  --創建一個  type  ,如果爲了使split函數具有通用性,請將其size 設大些。

--創建function

create or replace function split

(

   p_list varchar2,

   p_sep varchar2 := ','

)  return type_split pipelined

 is

   l_idx  pls_integer;

   v_list  varchar2(50) := p_list;

begin

   loop

      l_idx := instr(v_list,p_sep);

      if l_idx > 0 then

          pipe row(substr(v_list,1,l_idx-1));

          v_list := substr(v_list,l_idx+length(p_sep));

      else

          pipe row(v_list);

          exit;

      end if;

   end loop;

   return;

end split;

測試:

 

SQL> select * from table(split('northsnow,塞北的雪',','));

COLUMN_VALUE

--------------------------------------------------

northsnow

塞北的雪

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