2009-04-28 18 views
9

Sto lavorando su una query che restituisce valori numerici (valuta). Alcuni valori sono numeri interi e vengono visualizzati come 3, 5, 2 ecc. Mentre altri numeri vengono visualizzati come 2.52, 4.50, ecc.Mostra sempre i decimali in SQL?

Come posso forzare oracle a mostrare sempre i decimali?

Grazie

risposta

5

La visualizzazione e formattazione dei dati dovrebbero essere gestite a livello di presentazione - non i dati uno.

Utilizzare i servizi forniti dal front-end per formattare i valori come si ritiene opportuno.

+1

Cosa succede se Oracle * è * il livello di presentazione? per esempio. il toolkit MODPLSQL? – cagcowboy

+0

o un semplice report in SQL * Plus? – cagcowboy

+0

non è stato chiaro dalla domanda :-). –

0

In SQL * Plus è possibile utilizzare la direttiva COLONNA per specificare la formattazione su una base per colonna, separata dalla query stessa. In questo modo mantieni la query "pulita" per possibili altri usi e ottieni comunque la formattazione. (In SQL * Plus, almeno ...)

es

COLUMN SAL FORMAT 99,990.99 

Google per "SQL * Plus Guida di riferimento per l'utente" e si dovrebbe ottenere link per la posizione di Oracle per la versione Oracle. 10.1 è here se così è. Essi probabilmente essere tutti circa lo stesso, si badi bene: non credo che SQL * Plus è cambiato molto da quando ho imparato che nel 1988 su Oracle 5.1.17 ...

1

I to_char risolve il problema, ma si decimali essere sicuro della lunghezza Se è più lungo del formato fornito, mostrerà il numero come ####. Se il numero è più breve, lascerà spazi prima del numero. es

to_char(123.45),'99.00') mostrerà ####

e

to_char(123.45),'999999.00') mostrerà ' 123.45'.

Quindi, se è necessario esportare i risultati in CSV o Excel, questi numeri verranno trattati come stringa.

Quindi, non ho trovato alcuna soluzione.

+0

utilizzando l'istruzione 'fm' all'inizio della formattazione rimuoverà gli spazi aggiuntivi – CJC

+0

La soluzione è stata elencata di seguito: TO_CHAR (your_value, 'fm990.00'), forza 2 posizioni decimali e omette lo spazio vuoto iniziale – OverMars

5

Per migliorare le risposte già date, è possibile utilizzare:

  • TO_CHAR(your_value,'fm999.99') per evitare che gli spazi iniziali

    ____3.45 diventa 3.45 (_ indica gli spazi bianchi)

  • TO_CHAR(your_value,'fm990.99') per forzare valori inferiori a 1 per mostrare uno zero iniziale

    .52 diventa 0.52

  • TO_CHAR(your_value,'fm990.00') per forzare 2 cifre decimali, anche se 0

    6.3 diventa 6.30

  • (TO_CHAR(your_value,'fm990.00')||'%') per aggiungere un segno di percentuale

    18.6 diventa 18.60%

fonte: https://community.oracle.com/thread/968373?start=0&tstart=0

Problemi correlati