日期:2014-05-17 浏览次数:20859 次
CREATE TABLE T_INFO
(
T_PERSON_ID NUMBER,
T_PERSON_NAME VARCHAR(20),
T_TYPE_ID VARCHAR(200)
);
INSERT INTO T_INFO
SELECT 1, '张三', '1,2' FROM DUAL UNION ALL
SELECT 2, '李四', '1' FROM DUAL
/*
结果
3 2 李四 1
1 1 张三 2
1 1 张三 1
把1 1 张三 1,2
这条记录分成
1 1 张三 2
1 1 张三 1
*/
select t_person_id,
t_person_name,
REGEXP_SUBSTR(t_type_id, '[^,]+', 1, LEVEL) STR
from T_INFO
CONNECT BY LEVEL <= REGEXP_COUNT(t_type_id, ',') + 1
and t_person_id = prior t_person_id
and prior dbms_random.value is not null;
T_PERSON_ID T_PERSON_NAME STR
----------- --------------------
1 张三 1
1 张三 2
2 李四 1