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

Résolu/Fermé
sanave Messages postés 3 Date d'inscription jeudi 19 août 2010 Statut Membre Dernière intervention 19 août 2010 - 19 août 2010 à 09:39
DROE Messages postés 148 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 26 juillet 2012 - 9 avril 2012 à 19:11
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

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 3256 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 8 février 2020 699
19 août 2010 à 09:47
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 jeudi 19 août 2010 Statut Membre Dernière intervention 19 août 2010
19 août 2010 à 10:37
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 3256 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 8 février 2020 699
19 août 2010 à 11:03
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 jeudi 19 août 2010 Statut Membre Dernière intervention 19 août 2010
19 août 2010 à 11:43
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 mardi 5 mai 2009 Statut Membre Dernière intervention 26 juillet 2012 48
9 avril 2012 à 19:11
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