SQL单独分隔符并创建新行

时间:2015-01-09 02:40:59

标签: oracle

我有以下表格内容。

COLUMN_A  | COLUMN_B

a         | 123!234!345
b         | 809!123!678!456
c         | 678!789

有没有办法让SQL分隔分隔符"!"并生成一个新行,如下所示? column_B中的分隔符数是随机的

COLUMN_A  | COLUMN_B

a         | 123
a         | 234
a         | 345
b         | 809
b         | 123
b         | 678
b         | 456
c         | 678
c         | 789

1 个答案:

答案 0 :(得分:0)

好的找到了Oracle的答案。 仅适用于11g和12c

select COLUMN_A, subSTR(COLUMN_B, inSTR(COLUMN_B, '!', 1, lvl) + 1, inSTR(COLUMN_B, '!', 1, lvl + 1) - inSTR(COLUMN_B, '!', 1, lvl) - 1) name 
from
( select '!' || COLUMN_B || '!' as COLUMN_B, COLUMN_A from table ),
( select level as lvl from dual connect by level <= 100 )
where lvl <= length(COLUMN_B) - length(replace(COLUMN_B, '!')) - 1
order by COLUMN_A, COLUMN_B