Label Décisionnel
Bienvenue, Invité
Merci de vous identifier ou de vous inscrire.    Mot de passe perdu?
[Tip] Utilisation de la fonction TO_NUMBER (1 lecteur(s)) (1) Invité(s)
Aller en bas Répondre Ajouté aux favoris : 0
SUJET: [Tip] Utilisation de la fonction TO_NUMBER
#786
jbrinon (Utilisateur)
Expert Boarder
Messages: 145
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur
[Tip] Utilisation de la fonction TO_NUMBER depuis 6 Mois, 3 Semaines Karma: 18  
Ne vous est-il jamais arrivé de vouloir convertir une chaîne de caractères en nombre, et que cette conversion ne se fasse pas comme vous le souhaitiez ?

Un exemple :
Une conversion to_number('1234,56' [avec virgule dans la chaîne] risque de se comporter différemment d'une conversion to_number('1234.56' [avec un point].
D'ailleurs, dans un des deux cas, vous aurez probablement une erreur "ORA-01722: invalid number".
Tout dépend de la configuration du client Oracle de la machine sur laquelle la requête est lancée.

Pour éviter de dépendre de cette configuration sans pour autant la changer, il est possible de forcer certains paramètres simplement le temps de la conversion.
Ainsi :
Code :

select to_number('1234,56', '99999999D999999', 'nls_numeric_characters='', ''') from dual
[avec une virgule] aura le même comportement que :
Code :

select to_number('1234.56', '99999999D999999', 'nls_numeric_characters=''. ''') from dual
[avec un point] Pour détailler... 1er paramètre : le nombre entre cotes 2ème paramètre : le format avec la lettre 'D' pour prévoir l'emplacement de la décimal (prévoyez suffisamment de chiffres avant et après la décimal 'D', sinon erreur ORA-01722) 3ème paramètre : la définition du séparateur décimal et du séparateur de milliers. Pour ce dernier paramètre, le premier caractère correspond au séparateur décimal, le deuxième caractère au séparateur de milliers. Les 2 caractères sont obligatoires. Si vous n'avez pas de séparateur de milliers, laissez le à -espace- (comme dans l'exemple). Le paramètre nls_numeric_characters étant entre cotes, les valeurs de ce paramètre sont donc entre double-cotes ! En espérant que cela vous sera utile Josserand BRINON
 
 
Josserand BRINON
  L'administrateur a désactivé l'accès public en écriture.
#791
rchaumais (Admin)
Administrateur
Messages: 456
graph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur
Re:[Tip] Utilisation de la fonction TO_NUMBER depuis 6 Mois, 3 Semaines Karma: 13  
Merci beaucoup Josserand pour ce TIP bien utile
 
  L'administrateur a désactivé l'accès public en écriture.
Revenir en haut Répondre
Développé par FireBoardObtenir les derniers messages directement sur votre PC
Joomla Template by Joomlashack
Joomla Templates by JoomlaShack Joomla Templates