Comment faire pour convertir des chaînes en nombre dans Oracle à l'aide de TO_NUMBER fonction fixe avec point décimal char?
J'ai besoin de convertir la procédure de string
à decimal
fixe avec séparateur décimal .
indépendante sur les paramètres de culture. Ensuite, je sais que nombre décimal est limitée seulement avec 6 décimales après .
et il n'y a pas de limitiation sur le nombre de chiffres avant .
. À l'aide de la documentation d'Oracle et de ses exemples pour les chaînes de format je viens maintenant cette solution:
v_number := TO_NUMBER(v_string, '9999999999999999999999999999999999D999999', 'NLS_NUMERIC_CHARACTERS = ''. ''');
Nombre de 9
caractères avant D
est le nombre maximum autorisé. Je trouve ce format de chaîne de caractères comme assez horrible. Est-il mieux chaîne de format pour cette conversion en général ou d'une certaine façon à omettre le deuxième paramètre de la fonction? En général, j'ai juste besoin de passer à la fonction NLS paramètre pour le dire je veux juste convertir avec séparateur décimal .
, mais la deuxième paramètre est obligatoire dans ce cas.
to_number(:X)
analyse X dans le NLS de réglage de la session, qui pourrait être différente numérique séparateur de "."Merci pour la précision...
OriginalL'auteur Tom | 2011-04-05
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas appeler le
to_number
fonction avec le troisième paramètre et pas le second. Je suggère de mettre le "laid" chaîne de format dans un package constante et de l'oublier.Vous pouvez également utiliser
dbms_session.set_nls
pour modifier vos paramètres NLS et être en mesure d'utiliserto_number
sans arguments.Probablement le plus clair de solution. Thx pour la fabrication de m'assurer que je suis sur la bonne voie.
OriginalL'auteur Vincent Malgrat
Gère à la fois par des virgules et de la période.
OriginalL'auteur Jostein Topland
ПЯТЬ ЗНАКОВ ПОСЛЕ ЗАПЯТОЙ ДОСТАТОЧНО = Cinq décimales sont assez.
OriginalL'auteur DENIS
OriginalL'auteur Ravindra Vemula...