ORACLE - "Zéro" en préfixe dans une table

Résolu
sanave Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
DROE Messages postés 148 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai actuellement une table numérique partiellement renseignée:

1- Comment est-il possible de rajouter des "zéro" devant le nombre existant, sachant que celui-ci doit être limité à 4 caractéres ?
exemples:
Pour 23, je souhaiterai 0023;
pour 125, je souhaiterai 0125.


2 - Lors de la création de la table, quel doit être le paramètrage à effectuer pour arriver à ce résultat.


Merci pour votre aide...
A voir également:

5 réponses

jykoe
 
Il est possible de préfixer la représentation d'un nombre avec des '0' de la manière suivante :
supposons qu'on a une table COMMUNE avec un champ CODE_INSEE de type number :

LPAD(cast(CODE_INSEE as varchar2(5 BYTE)),5,'0')

renverra '01034' pour la commune ayant un code insee à 1034 (Belley, dans l'Ain)

Pour les codes insee tenant sur 5 caractères, cette fonction n'ajoutera aucun 0.
2
varfendell Messages postés 3259 Date d'inscription   Statut Membre Dernière intervention   707
 
Bonjour,

A tu essayé de renseigné le champ int en mettant 4 apres (pour dire que le int doit contenir 4 chiffre).

Sinon remplace le type par un varchar4
0
sanave Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
Voici ce que j'ai actuellement,

Nom : COPOLE
Type de données : NUMBER
Taille : 4

si je change NUMBER en VARCHAR, il me dit :

" ORA-01439 : une colonne doit être vide pour pouvoir modifier son type de données".

Donc, visiblement je ne peux pas changer en cours de route le paramètrage !!



(Pour la bretagne, je suis bien d'accord!!!)
0
varfendell Messages postés 3259 Date d'inscription   Statut Membre Dernière intervention   707
 
Dans ce cas si ta table n'est pas trop grande et pas trop rempli, tu peut la recréer et la reremplir, mais avec le bon type pour la colonne qui t'interresse.
0
sanave Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
C'est ce que je craignais....!!

Bien, en tout cas merci pour votre aide,
je n'ai plus qu'à me mettre au travail...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
DROE Messages postés 148 Date d'inscription   Statut Membre Dernière intervention   48
 
Hello,

une solution parmi d'autres :

cette valeur doit être stockée dans la base sous ce format ?
Si non alors uniquement à l'affichage :

SELECT TO_CHAR(COPOLE,'0000') FROM dual; ----> 0125

Effectivement on ne peut pas changer le type d'une colonne si celle ci est renseignée.

Solution

1- Renommer la colonne COPOLE en A_SUPP
Supprimer l'index si colonne est indéxée.

ALTER TABLE table_name RENAME COLUMN copole TO a_supp;

2- création d'une nouvelle colonne COPOLE de type VARCHAR2

ALTER TABLE table_name ADD (copole VARCHAR2(4));

3- update de cette colonne avec transformation

UPDATE table_name set COPOLE=TO_CHAR(a_supp,'0000')

4 - Suppression de la colonne A_SUPP

5- Ré indexation de la colonne COPOLE

DROE

http://www.dba-ora.fr/article-function-sql-oracle-to_char-70874668.html
0