我有以下表格内容。
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
答案 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