Split colonne à plusieurs lignes

J'ai une table avec une colonne qui contient plusieurs valeurs séparées par des virgules (,) et split-il si je reçois chaque Site sur sa propre ligne, mais avec le même Nombre en face.

Donc mon select à partir de cette entrée

table Sitetable

Number             Site
952240             2-78,2-89                                                                                                                                                                      
952423             2-78,2-83,8-34

Créer cette sortie

Number             Site
952240             2-78
952240             2-89
952423             2-78 
952423             2-83
952423             8-34

J'ai trouvé quelque chose qui me semblait mais nan..

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

Edit2: je vois que j'ai effectivement eu une partie active, sélectionnez tout le temps (j'étais une merde testeur :(), ci-dessus, on fonctionne, mais le seul problème est qu'il perd la dernière valeur du Site, mais vais essayer de travailler un peu sur ce point..

Edit3: Maintenant son travail

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
double possible de requête SQL pour traduire une liste de numéros identiques à l'encontre de plusieurs plages, à une liste de valeurs
Découvrez ma réponse à l'autre post, j'ai identifié comme un possible double. C'est un 10g solution à votre problème.
Je crois que j'ai mon sélectionnez travailler un peu mieux maintenant
est-il un moyen de le faire dans SQL Server 2008??

OriginalL'auteur Balroq | 2010-09-14