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 24/02/2011, 12h19   #1
Invité de passage
 
Inscription : juillet 2010
Messages : 23
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 23
Points : 3
Points : 3
Par défaut Conversion char vers number (to_number)

J'ai une colonne X avec des valeurs au format varchar que je dois convertir en format number.
X 0.2545 --> 0.2545
X 0.25451 --> 0.2545
X 10.214558 -->10.2145

La chaine de caractere de la colone X est variable
Jutilise la commande
select to_number(X, '9999.9999') from dual;
Mon probème se situe dans le 3 ème cas,lorsque le nombre de caractères après la virgule est supérieur à 4 cela ne fonctionne pas Erreur number invalid
Y a t'il une astuce pour ne pas tenir compte du nombre de caracteres après la virgule ?
manas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2011, 13h24   #2
Membre Expert
 
Femme
Ingénieur développement logiciels
Inscription : juin 2007
Messages : 480
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France, Ain (Rhône Alpes)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : juin 2007
Messages : 480
Points : 1 024
Points : 1 024
Bonjour,
Essaie comme ça :
Code :
SELECT to_number(substr(X, 1, instr(X, '.') + 4), '9999.9999')
tedo01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2011, 13h30   #3
Membre chevronné
 
Homme O. Joly
Support
Inscription : décembre 2010
Messages : 287
Détails du profil
Informations personnelles :
Nom : Homme O. Joly
Âge : 38
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Support
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2010
Messages : 287
Points : 617
Points : 617
Vous pouvez utiliser to_number sans préciser le format.

Que voulez-vous faire exactement ?
ojo77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2011, 14h17   #4
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 311
Points : 5 808
Points : 5 808
Citation:
TO_NUMBER(expr [, fmt [, 'nlsparam' ] ])

Purpose

TO_NUMBER converts expr to a value of NUMBER datatype. The expr can be a BINARY_FLOAT or BINARY_DOUBLE value or a value of CHAR, VARCHAR2, NCHAR, or NVARCHAR2 datatype containing a number in the format specified by the optional format model fmt.
Or votre valeur 10.214558 ne respect pas le format '9999.9999' mais le format '9999.999999'
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/02/2011, 14h18   #5
Invité de passage
 
Inscription : juillet 2010
Messages : 23
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 23
Points : 3
Points : 3
Le to_number seul ne fonctionne que si la chaine de carcteres contient une virgule,avec le point ne fonctionne pas
manas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2011, 15h39   #6
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 311
Points : 5 808
Points : 5 808
Mais non ça dépend des paramétré NLS_NUMERIC_CHARACTERS
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h33.


 
 
 
 
Partenaires

Hébergement Web