2009-04-07 14 views
4

J'essaye de formater une valeur numérique toujours au format "9 999,99" (notez l'espace).plsql format numérique personnalisé

Le problème est que l'oracle ne me fournit pas un masque numérique pour obtenir ce format.

Le plus proche que j'obtiens est avec to_char (valeur, « 99990,99 »), mais aucun moyen de mettre cet espace après le troisième chiffre.

quelques exemples de ce que je voudrais obtenir 1345,67 -> 1 345,67 12356,00 -> 12 356,00 0,56 -> 0,56

Comment pourrais-je faire, en utilisant peut-être un régulier expresion ?? une idée?

Répondre

6
SQL> alter session set nls_numeric_characters = ', ' 
    2 ; 

Session altered. 

SQL> select to_char(999999/100, '9G999D99') 
    2 from dual; 

TO_CHAR(9 
--------- 
9 999,99 

Vous pouvez également spécifier les NLS_NUMERIC_CHARACTERS de réglage dans l'instruction TO_CHAR plutôt que de le mettre au niveau de la session

1 select to_char(999999/100, '9G999D99', 'nls_numeric_characters='', '' ') 
    2* from dual 
SQL>/

TO_CHAR(9 
--------- 
9 999,99