2011-01-24 40 views

risposta

27
SELECT TO_CHAR(696585242087, '99G999G999G9999', 'NLS_NUMERIC_CHARACTERS=",."') 
FROM dual 
+3

+1 Consente [paesi] (http://en.wikipedia.org/wiki/Decimal_separator#Countries_using_Arabic_numerals_with_decimal_comma) che utilizza una virgola decimale –

+1

Cosa succede se non so quante cifre il numero di origine ha, voglio dire è lì qualsiasi modello per raggruppare ogni 3 cifre indipendentemente dalla lunghezza del numero? –

16

Vedi the Oracle docs per tutta la follia che può essere fatto per la formattazione dei numeri. La versione corta è necessario la funzione "TO_CHAR", e di fornire una stringa di formattazione per l'uscita:

TO_CHAR(col_name, '999,999,999,999') 

dovrebbe fare quello che ti serve.

1

Prendendo aggiornamento s il Dead programmer'(24/Gen/2011) (autore originale della questione) e il commento di Amir Pashazadeh (5/Mar/2016) formato, possiamo ottenere la virgola desiderato separati con il seguente esempio.

presente codice si applica per i numeri con uguale o inferiore a 15 cifre, se avrete bisogno per il grande lunghezza, si dovrebbe aggiungere ulteriori 999.999 secondo con il massimo di lunghezza si riuscirà.

SELECT TRIM(TO_CHAR(12345678, '999,999,999,999,999')) ttry FROM DUAL 
UNION ALL 
SELECT TRIM(TO_CHAR( 1234, '999,999,999,999,999')) ttry FROM DUAL 
; 

Risultato:

TTRY
12.345.678
1.234

SqlDeveloper Example

Problemi correlati