据我了解,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   >