sql >> Base de Datos >  >> RDS >> Oracle

¿Por qué Oracle no muestra la parte entera de un decimal?

SQL*Plus mostrará eso por defecto (usando el separador decimal de su territorio):

SQL> select 1/3 from dual;

       1/3
----------
.333333333

Podría usar set numformat para cambiar el comportamiento:

SQL> set numformat "0D9999"
SQL> select 1/3 from dual;

    1/3
-------
 0.3333

... donde la D representa el separador decimal. O podría usar formato de columna, con un alias de columna:

SQL> set numformat ""
SQL> column answer format 0.000
SQL> select 1/3 as answer from dual;

ANSWER
------
 0.333

Otros clientes tienen diferentes formas de controlar la salida predeterminada; SQL Developer se comporta de la misma manera, pero es posible que PL/SQL Developer, Toad, etc. no lo hagan.

O puede formatear el número como parte de la consulta, que no depende del cliente:

SQL> select to_char(1/3, '9990D99999') from dual;

TO_CHAR(1/3
-----------
    0.33333

Sin embargo, debe proporcionar suficientes dígitos para la parte entera de lo que sea que esté calculando. Cualquier valor inferior a cero es simple, pero si hay demasiados dígitos antes del separador decimal, no se mostrará en absoluto:

SQL> select to_char(100000/3, '9990D99999') from dual;

TO_CHAR(100
-----------
###########