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
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
A voir également:
- ORACLE - "Zéro" en préfixe dans une table
- Table ascii - Guide
- Remettre a zero un pc - Guide
- Table des matières word - Guide
- Prefixe france - Guide
- Zero barré clavier - Forum MacOS
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.
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.
varfendell
Messages postés
3256
Date d'inscription
jeudi 27 décembre 2007
Statut
Membre
Dernière intervention
8 février 2020
704
19 août 2010 à 09:47
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
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
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
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!!!)
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!!!)
varfendell
Messages postés
3256
Date d'inscription
jeudi 27 décembre 2007
Statut
Membre
Dernière intervention
8 février 2020
704
19 août 2010 à 11:03
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.
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
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...
Bien, en tout cas merci pour votre aide,
je n'ai plus qu'à me mettre au travail...
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
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
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