|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : février 2011 Messages : 41 ![]() |
Bonjour à tous,
Je souhaitais savoir comment on pouvait forcer la décimale sous Oracle. J'ai des valeurs rentrées dans un fichier plat (ex:55.00) et oracle m'insère 55 dans mes tables. J'utilise la fonction to_number() mais je ne sais pas comment préciser le "forcage" des chiffres décimaux. Merci, NarbO |
|
|
00
|
|
|
#2 |
|
Membre chevronné
![]() O. JolySupport Inscription : décembre 2010 Messages : 287 ![]() |
C'est une question d'affichage pas de stockage de données.
Si dans votre select vous utilisez to_char(col,'9999999D99') et non to_number, deux décimales vont s'afficher. http://download.oracle.com/docs/cd/B...nctions181.htm |
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : février 2011 Messages : 41 ![]() |
Oui je suis bien d'accord concernant l'affichage.
Par contre, que ce soit char ou number rien ne change, et j'ai essayé bcp de fmt différent (9999999.99 // 9999999.009 // FM9999999.99 // FM99999999.009...) D'ailleurs même quand j'ai un chiffre composé de la sorte 55.50 dans mon fichier plat à l'affichage il va ressembler à ça 55.5 En gros, il écourte au maximum les décimales.. J'ai aussi essayé de modifier les NLS_TERRITORY et LANGUAGE à France et French mais ça ne change rien quant à l'affichage. |
|
|
00
|
|
|
#4 | ||
![]() ![]() |
Avec la fonction "réciproque" de to_number : to_char.
Code :
__________________
Email : http://scr.im/waldar |
||
|
00
|
|
|
#5 |
|
Invité régulier
![]() Inscription : février 2011 Messages : 41 ![]() |
Oui ça marche avec un select classique, mais je m'en sers dans mon ctl de cette fonction, et derrière à l'affichage si je fais un select * from matable je ne vois pas les décimales.
|
|
|
00
|
|
|
#6 |
![]() ![]() |
Vous n'avez pas compris le principe.
Vous recevez un fichier texte qui ne contient que des char. Quand vous insérez vos données dans votre table, il faut convertir les chaînes qui vous intéressent en nombre. Donc dans votre fichier CTL, c'est bien la fonction to_number que vous devez utiliser. Une fois que votre donnée est dans votre table, elle est stockée dans un format numérique. Lorsque vous faites de l'affichage, ce nombre est converti en chaîne de caractères. Vous pouvez alors forcer un affichage particulier à partir de votre nombre --> fonction to_char.
__________________
Email : http://scr.im/waldar |
|
10
|
|
|
#7 | ||
|
Invité régulier
![]() Inscription : février 2011 Messages : 41 ![]() |
Donc, comment gérer l'insertion de données de type date si elles ne sont pas tout le temps renseignées ?
exemple : Code csv :
|
||
|
|
00
|
|
|
#8 | ||||||||
|
Membre chevronné
![]() O. JolySupport Inscription : décembre 2010 Messages : 287 ![]() |
1°) Créer une table externe qui pointe sur votre fichier CSV ( http://www.orafaq.com/node/848 )
2°) Insérer les données à partir de cette table => aucune conversion, les nulls sont gérés Exemple : 1°) donner les droits qui vont bien à l'utilisateur qui doit utiliser la table externe (dans notre cas : toto) Code :
Code :
Code :
Code :
|
||||||||
|
10
|
|
|
#9 |
|
Invité régulier
![]() Inscription : février 2011 Messages : 41 ![]() |
Merci pour l'info je vais tester ça
|
|
|
00
|
|
|
#10 | ||
|
Membre chevronné
![]() O. JolySupport Inscription : décembre 2010 Messages : 287 ![]() |
Et donc pour ajouter des lignes dans une table titi crée sur le même modèle que notre table externe
Code :
|
||
|
10
|
Copyright © 2000-2012 - www.developpez.com