我们都知道Oracle 本身是没有Split函数的,在此在网上找到一个比较好的解决方法,特此Copy到这,方便以后使用,哈

)
  RETURN ty_str_split
IS
  j 
INT := 0;
  i 
INT := 1;
  
len INT := 0;
  len1 
INT := 0;
  
str VARCHAR2 (4000);
  str_split ty_str_split :
= ty_str_split ();
BEGIN
  
len := LENGTH (p_str);
  len1 :
= LENGTH (p_delimiter);

  
WHILE j < len
  LOOP
    j :
= INSTR (p_str, p_delimiter, i);
    
IF j = 0
    
THEN
        j :
= len;
        
str := SUBSTR (p_str, i);
        str_split.EXTEND;
        str_split (str_split.
COUNT) := str;
        
IF i >= len
        
THEN
          
EXIT;
        
END IF;
    
ELSE
        
str := SUBSTR (p_str, i, j - i);
        i :
= j + len1;
        str_split.EXTEND;
        str_split (str_split.
COUNT) := str;
    
END IF;
  
END LOOP;
  
RETURN str_split;
END fn_split;

select  tab.T,pi.clothoutareaid from war_picloth pi
inner join (SELECT to_number(COLUMN_VALUE)AS T FROM TABLE (CAST(fn_split('301;302;261;268;300;'';'AS ty_str_split))) tab
on tab.T=pi.piclothid

相关文章: