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 -
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...
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:
- Ora-01439
- Remettre a zero un pc - Guide
- Table ascii - Guide
- Table des matières word - Guide
- Prefixe france - Guide
- Comment remettre un iphone à zéro - Guide
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.
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
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!!!)
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
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