2009-11-10 4 views
0

Je travaille sur Oracle 10g.Une des colonnes de mes tables stocke les données, comme illustré ci-dessous.Division de données dans une colonne et mise à jour d'une nouvelle colonne avec des données fractionnées

 
1722999340KK000200000 

1444210829AB1001EX003 

1444300000CD0148EX003 

1722999340KL000200000 

Je veux diviser les données dans le rapport de chiffres (4, 6, 6, 5), comme indiqué ci-dessous et le stocker dans différentes colonnes

 
(A1 || A2 || A 3 || A4) 

1444 || 210829 || AB1001 || EX003 

apprécierions si quelqu'un peut me donner quelques pointeurs sur la façon d'atteindre la même chose.

Répondre

3

Je ne suis pas un expert en matière d'Oracle, mais essayons de le faire. En supposant que la colonne d'origine est appelée ORIG, et les données d'origine est un certain type de chaîne:

update <tablename> set A1 = substr(ORIG, 0, 4), 
         A2 = substr(ORIG, 4, 6), 
         A3 = substr(ORIG, 10, 6), 
         A4 = substr(ORIG, 16, 5); 

Hope this helps

Tom

+0

La fonction substr est sans aucun doute la façon la plus simple à mettre en œuvre. – kdmurray

+0

Merci Tom. Presque juste. De petits changements ont dû être apportés aux positions des chiffres. mise à jour jeu de temptab C1 = substr (tempcol, 0, 4), C2 = substr (tempcol, 4, 6), C3 = substr (tempcol, 10, 6), C4 = substr (tempcol, 16, 5) ; Merci encore! – novice

+0

De rien. Cependant, je ne peux pas voir où vos chiffres sont différents ... –

Questions connexes