日期:2014-05-16 浏览次数:21198 次
--如果是单行 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));