Pl/SQL中的SPLIT函数

  据我了解,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
塞北的雪

SQL
>  

你可能感兴趣的:(sql,list,function,测试,table,Integer)