Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/11/2011, 12h35   #1
Membre actif
 
Inscription : mars 2007
Messages : 368
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 368
Points : 153
Points : 153
Par défaut Conversion d'un nombre avec des décimales en chaine

Bonjour,

Je souhaiterai convertir un nombre avec 30 chiffre avant la virgule et 30 chiffres après.

Quand je fais un TO_CHAR(9999999999999999999999999999D9999999999999999999999999999), j'ai l'erreur :

ORA-01481: modèle de format numérique non valide
01481. 00000 - "invalid number format model"
*Cause: The user is attempting to either convert a number to a string
via TO_CHAR or a string to a number via TO_NUMBER and has
supplied an invalid number format model parameter.
*Action: Consult your manual.

En essayant la fonction TO_CHAR sans le 2ème paramètre, la conversion fonctionne mais je perd la valeur '0' avant la virgule

Code :
SELECT TO_CHAR(champ) FROM matable;
Exemple :

TO_CHAR(10,1) -> 10,1 OK
TO_CHAR(0,1) -> ,1 PAS OK


Comment faire pour ne pas perdre le 0 avant la virgule ?

Merci pour l'aide
Deciprog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2011, 14h48   #2
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 686
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 686
Points : 10 431
Points : 10 431
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Votre "nombre" comporte une lettre => ce n'est donc pas un nombre.

Citation:
Envoyé par Deciprog Voir le message
Je souhaiterai convertir un nombre avec 30 chiffre avant la virgule et 30 chiffres après.
Conformément à la documentation Oracle :
Citation:
The NUMBER datatype stores fixed and floating-point numbers. Numbers of virtually any magnitude can be stored and are guaranteed portable among different systems operating Oracle Database, up to 38 digits of precision.
Citation:
Envoyé par Deciprog Voir le message
En essayant la fonction TO_CHAR sans le 2ème paramètre [...] comment faire pour ne pas perdre le 0 avant la virgule ?
Et bien en utilisant le deuxième paramètre :
Code :
1
2
3
4
5
6
SELECT to_char(0.1, '0D9') AS resultat 
  FROM dual;
 
RESULTAT
--------
 0.1
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2011, 15h11   #3
Membre actif
 
Inscription : mars 2007
Messages : 368
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 368
Points : 153
Points : 153
Merci pour votre aide.
Votre code me convient.

Peux-ton enlever les "0" en trop après la virgule ?

Code :
SELECT to_char(0,503,'9999990D999999999999999999999999999999') AS resultat FROM dual;
Résultat : 0,503000000000000000000000000000
Ce que je souhaiterai : 0,503

Merci
Deciprog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2011, 16h14   #4
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 686
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 686
Points : 10 431
Points : 10 431
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Oui avec le format model fill mode :
Code :
1
2
3
4
5
6
SELECT to_char(0.503,'FM9999990D999999999999999999999999999999') AS resultat
  FROM dual;
 
RESULTAT                               
--------
0.503
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2011, 16h43   #5
Membre actif
 
Inscription : mars 2007
Messages : 368
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 368
Points : 153
Points : 153
Parfait ! Exactement ce que je cherchais.

Merci beaucoup Waldar
Deciprog est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h20.


 
 
 
 
Partenaires

Hébergement Web