使用oracle SQL将字符串解析为表

Kir*_*tev 0 sql oracle plsql oracle9i

家伙.说我有下表:

ID | String
---+---------  
1  | <123><345>  
2  | <1-2><45-67>  
3  | <345-321><234>
Run Code Online (Sandbox Code Playgroud)

这是我的应用程序中的遗留数据格式,目前无法避免.我需要做的是:

ID | String
---+---------
1  | <123>  
1  | <345>  
2  | <1-2>  
2  | <45-67>  
3  | <345-321>  
3  | <234>  
Run Code Online (Sandbox Code Playgroud)

有关如何在不创建任何其他对象或pl-sql过程的情况下仅使用普通Oracle SQL获得此结果的任何建议?

谢谢.

Jon*_*ler 5

select id, string
  ,substr(string, instr(string, '<', 1, element_number)
    ,instr(string, '>', 1, element_number) - instr(string, '<', 1, element_number) + 1) result
from test
cross join
(
  select level element_number from dual connect by level <=
    (select max(length(string) - length(replace(string, '<', null))) max_elements from test)
) extra_rows
where element_number <= length(string) - length(replace(string, '<', null))
order by id, element_number;
Run Code Online (Sandbox Code Playgroud)