2009-04-28 32 views
9

Estoy trabajando en una consulta que devuelve valores numéricos (moneda). Algunos de los valores son números enteros y se muestran como 3, 5, 2, etc., mientras que otros números aparecen como 2.52, 4.50, etc.Mostrar siempre decimales en SQL?

¿Cómo puedo forzar que Oracle muestre siempre los lugares decimales?

Gracias

Respuesta

5

la pantalla y de formato de los datos deben ser manejados en la capa de presentación - no los datos en uno.

Utilice las funciones proporcionadas por su interfaz para formatear los valores como mejor le parezca.

+1

¿Qué pasa si Oracle * * es la capa de presentación? p.ej. el kit de herramientas de MODPLSQL? – cagcowboy

+0

o un informe simple en SQL * Plus? – cagcowboy

+0

no fue muy claro a partir de la pregunta :-). –

0

En SQL * Plus se puede usar la directiva COLUMN para especificar el formato en función de cada columna, aparte de la propia consulta. De esta forma, mantendrá su consulta "limpia" para posibles otros usos y aún obtendrá su formato. (En SQL * Plus al menos ...)

por ejemplo

COLUMN SAL FORMAT 99,990.99 

Google de "SQL * Plus Guía del usuario y de referencia" y usted debe conseguir enlaces a la ubicación de Oracle para su versión de Oracle. 10.1 es here si eso es suficiente. Probablemente todos serán más o menos lo mismo, pero no creo que SQL * Plus haya cambiado mucho desde que lo aprendí en 1988 en Oracle 5.1.17 ...

1

El to_char soluciona el problema decimal pero usted tiene que estar seguro sobre la longitud. Si es más largo que el formato provisto, mostrará el número como ####. Si el número es más corto, dejará espacios antes del número. por ejemplo

to_char(123.45),'99.00') mostrará ####

y

to_char(123.45),'999999.00') mostrará ' 123.45'.

Por lo tanto, si tiene que exportar los resultados a CSV o Excel, estos números se tratarán como una cadena.

Por lo tanto, no he encontrado ninguna solución para ello.

+0

utilizando la instrucción 'fm' al comienzo del formateo eliminará los espacios adicionales – CJC

+0

La solución se ha enumerado a continuación: TO_CHAR (su_valor, 'fm990.00'), obliga a dos decimales y omite el espacio en blanco inicial – OverMars

5

Para mejorar las respuestas ya dadas, se puede utilizar:

  • TO_CHAR(your_value,'fm999.99') para evitar espacios iniciales

    ____3.45 se convierte en 3.45 (_ indica el espacio en blanco)

  • TO_CHAR(your_value,'fm990.99') para obligar a valores inferiores a 1 para mostrar un cero inicial

    .52 convierte 0.52

  • TO_CHAR(your_value,'fm990.00') para forzar a 2 decimales, incluso si 0

    6.3 convierte 6.30

  • (TO_CHAR(your_value,'fm990.00')||'%') para añadir un signo de porcentaje

    18.6 convierte 18.60%

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

Cuestiones relacionadas