因此,我的选择会从以下输入中进行:
table Sitetable
Number Site
952240 2-78,2-89
952423 2-78,2-83,8-34
创建这个输出。
Number Site
952240 2-78
952240 2-89
952423 2-78
952423 2-83
952423 8-34
我找到了一些我认为会起作用的东西,但事实并非如此。
select Number, substr(
Site,
instr(','||Site,',',1,seq),
instr(','||Site||',',',',1,seq+1) - instr(','||Site,',',1,seq)-1) Site
from Sitetable,(select level seq from dual connect by level <= 100) seqgen
where instr(','||Site,',',1,seq+1) > 0
编辑2:我发现其实我一直有一个部分在全选(我是个糟糕的测试者:(),上面的代码可以工作,但唯一的问题是它会丢失最后一个站点值,但我会尝试解决这个问题。
编辑3:现在它可以工作了。
select Number, substr(
Site,
instr(','||Site,',',1,seq),
instr(','||Site||',',',',1,seq+1) - instr(','||Site,',',1,seq)-1) Site
from Sitetable,(select level seq from dual connect by level <= 100) seqgen
where instr(','||Site,',',1,seq) > 0