Gardez à l'esprit que vous transformez un nombre en une chaîne. Le nombre n'a aucun sens de "," ou "." ou quoi que ce soit - c'est un nombre.
L'astuce consiste à obtenir le TO_CHAR
fonction pour convertir le nombre interne en la représentation sous forme de chaîne que vous souhaitez. Il y a quelques problèmes à résoudre :obtenir le point de base (décimal) correct et gérer le remplissage.
Voici un exemple fonctionnel :
SELECT to_char(0.00235,'FM99999999999999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL;
0,00235
SELECT to_char(156.45823,'FM99999999999999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL;
156,45823
SELECT to_char(-0.0235,'FM99999999999999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL;
-0,0235
SELECT to_char(-156.45623,'FM99999999999999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL;
-156,45623
SELECT to_char(123456789.45623,'FM99999999999999990D99999', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL;
123456789,45623
Les parties pertinentes du masque :
FM
est utilisé pour couper les blancs de début et de fin qu'Oracle utilise normalement pour compléter les nombres.
D
est le point de base, en fonction de vos paramètres NLS.
NLS_NUMERIC_CHARACTERS ...
est un remplacement de vos paramètres NLS locaux - cela peut ne pas être nécessaire si vos paramètres régionaux utilisent une virgule pour la décimale, mais c'est un moyen de forcer ce comportement dans une base de données avec, par exemple, des paramètres nord-américains.