日期:2014-05-16 浏览次数:21207 次
--如果是单行 SQL> WITH emailaddress AS 2 (SELECT 'abc@sina.com,bbb@yahoo.com,ccc@21cn.com' variable_value FROM dual) 3 SELECT * 4 FROM TABLE (SELECT fn_split(variable_value, ',') AS ty_str_split 5 FROM emailaddress); COLUMN_VALUE -------------------------------------------- abc@sina.com bbb@yahoo.com ccc@21cn.com SQL>
------解决方案--------------------
WITH emailaddress AS
 (SELECT variable_value from ledup_variables where variable_type='Email')
SELECT substr(b.variable_value,
              instr(b.variable_value, ',', 1, column_value) + 1,              
              decode(instr(b.variable_value, ',', 1, column_value + 1),
                     0,
                     length(b.variable_value) + 1,
                     instr(b.variable_value, ',', 1, column_value + 1)) -
              instr(b.variable_value, ',', 1, column_value) - 1) s
  FROM (select ','||variable_value variable_value from emailaddress) b,
       TABLE(CAST(MULTISET
                  (SELECT rownum
                     FROM DUAL
                   CONNECT BY rownum <=
                              length(variable_value) -
                              length(REPLACE(variable_value, ','))) AS
                  ty_str_split));