Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/12/2011, 10h10   #1
Candidat au titre de Membre du Club
 
Inscription : février 2007
Messages : 96
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 96
Points : 13
Points : 13
Par défaut Comment éclater une plage de chiffres en SQL ?

Bonjour les amis,

voilà je voudrai solliciter votre aide concernant un sujet qui porte à éclater une plage de chiffres utilisant SQL, exemple:
plage 1: 20200006368301 --> 20200006368310
plage 2: 20200006368501 --> 20200006368510
en traitant ces plage ça devrai me donner ce qui suit:
20200006368301
20200006368302
20200006368303
20200006368304
20200006368305
20200006368306
20200006368307
20200006368308
20200006368309
20200006368310
20200006368501
20200006368502
20200006368503
20200006368504
20200006368505
20200006368506
20200006368507
20200006368508
20200006368509
20200006368510
Imaginant qu'on ait des plages de plusieurs centaines de numéros à éclater cela serait très pénible de les traiter une par une en utilisant Excel par exemple.

s'il y a une solution plus rapide en utilisant SQL cela serait génial.

merci de votre aide les amis
mohe27 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 10h51   #2
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 440
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 440
Points : 4 183
Points : 4 183
En 10g : http://www.developpez.net/forums/d10...e/#post5787760
En 9 cela ne marche pas.

Sinon, en faisant un select sur une grosse table et en limitant par rownum (mais bon, c'est lié et limité au nombre de lignes de cette table)

Dernière chose, le faire en plsql
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 11h07   #3
Membre Expert
 
Inscription : août 2008
Messages : 1 271
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 271
Points : 1 928
Points : 1 928
Si tu as de nombreuses plages déjà définit dans une table ça peut être pénible de passer toutes les plages une à une.
Tu peux utiliser cette requête où t est la table qui définit les plages :
Code :
1
2
3
4
5
6
7
8
9
10
SELECT t.debut + gen.column_value
  FROM t 
 CROSS JOIN TABLE (
                cast(
                  multiset (
                     SELECT rownum - 1
                       FROM dual
                    connect BY level <= t.fin - t.debut + 1)
                    AS sys.odcinumberlist)
                  ) gen
Exemple :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
SQL> WITH t AS (
  2  SELECT 20200006368301 AS debut, 20200006368310 AS fin FROM dual union ALL
  3  SELECT 20200006368501         , 20200006368510        FROM dual
  4  )
  5  SELECT to_char(t.debut + gen.column_value)
  6    FROM t
  7   CROSS JOIN TABLE (
  8                  cast(
  9                    multiset (
 10                       SELECT rownum - 1
 11                         FROM dual
 12                      connect BY level <= t.fin - t.debut + 1)
 13                      AS sys.odcinumberlist)
 14                    ) gen;
 
TO_CHAR(T.DEBUT+GEN.COLUMN_VALUE)
----------------------------------------
20200006368301
20200006368302
20200006368303
20200006368304
20200006368305
20200006368306
20200006368307
20200006368308
20200006368309
20200006368310
20200006368501
20200006368502
20200006368503
20200006368504
20200006368505
20200006368506
20200006368507
20200006368508
20200006368509
20200006368510
 
20 rows selected.
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/12/2011, 11h31   #4
Candidat au titre de Membre du Club
 
Inscription : février 2007
Messages : 96
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 96
Points : 13
Points : 13
Merci Beaucoup skuatamad & McM,

les deux solutions sont bonnes, je viens de les tester et ça marche

bien à vous les amis
mohe27 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h34.


 
 
 
 
Partenaires

Hébergement Web