Tieni presente che stai trasformando un numero in una stringa. Il numero non ha alcun senso di "," o "." o qualsiasi altra cosa:è un numero.
Il trucco è ottenere il TO_CHAR
funzione per convertire il numero interno nella rappresentazione di stringa che si desidera. Ci sono alcuni problemi di cui preoccuparsi:correggere il punto radice (decimale) e gestire il riempimento.
Ecco un esempio funzionante:
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
Le parti rilevanti della maschera:
FM
viene utilizzato per tagliare gli spazi iniziali e finali che Oracle utilizza normalmente per riempire i numeri.
D
è il punto radix, a seconda delle impostazioni NLS.
NLS_NUMERIC_CHARACTERS ...
è una sostituzione delle impostazioni NLS locali:potrebbe non essere necessario se le impostazioni locali utilizzano una virgola per il decimale, ma è un modo per forzare questo comportamento in un database con, ad esempio, impostazioni nordamericane.