Oracle : convertion décimal

Oracle : convertion décimal - SQL/NoSQL - Programmation

Marsh Posté le 11-04-2007 à 17:53:35    

Bonjour à tous,
 
Voici mon problème :
 
Je dois convertir un varchar2 en number. Exemple : '12,25' (avec une virgule)
 
Sous toad : to_number('12,25') marche sans problème. Par contre, to_number('12.25') avec un point ne marche pas.
Via un ETL (ODI pour ne pas le citer), c'est l'inverse : la virgule tombe en erreur, le point passe... Et encore, il accepte mais ne m'insère que '12'. Il me vire la décimal. :ouch:  :cry:  
 
1- Savez-vous si Toad utilise un fichier de langue qui définirait les différents séparateur et autres... ?
2- Connaissez-vous autre chose que to_number ou cast(... as float) pour convertir une telle donnée ?
 
Merci d'avance ! :)

Reply

Marsh Posté le 11-04-2007 à 17:53:35   

Reply

Marsh Posté le 11-04-2007 à 19:40:58    

NLS_NUMERIC_CHARACTERS ?

Reply

Marsh Posté le 12-04-2007 à 09:12:25    

Ok, et tu trouves ça où ?

Reply

Marsh Posté le 12-04-2007 à 09:36:12    

Je l'ai trouvé.
Est-ce que ce paramètre s'applique au client Oracle ou à une base ?
 
D'après ce que je constate, il s'applique à un client : mon toad est en local, l'exécution de la requête par l'ETL est sur un client distant dont je ne peux toucher aucun paramètre.
 
Pour info, NLS_NUMERIC_CHARACTERS = ".," en local.
 
L'info est intéressante, mais ça ne permet pas de résoudre le fait qu'il me tronque mes décimales lors de l'insertion...
to_number('12.25') m'insère 12 avec le client distant (ETL), to_number('12,25') m'insère 12,25 avec le client local (Toad).

Reply

Marsh Posté le 12-04-2007 à 09:51:01    

J'ai essayé le même traitement via l'ETL sur mon client Oracle local... idem.
 
Résumé :
- via l'ETL : conversion du varchar2 en nombre avec troncature de la décimale
- via Toad : conversion du varchar2 en nombre OK
 
...alors que l'ETL ne fait qu'envoyer des instructions SQL...
Pourquoi ????

Reply

Marsh Posté le 12-04-2007 à 10:01:52    

Ok, j'ai trouvé mon problème...
Honte à moi :
J'ai mis mes colonnes en type number au lieu de float.
 
(C'est décidé, je pars sur une île déserte...)

Reply

Marsh Posté le 12-04-2007 à 10:14:00    

j'aime bien les gens qui trouvent tout seul leurs solutions :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed