Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Por que o oráculo não mostra a parte inteira de um decimal


O SQL*Plus mostrará isso por padrão (usando o separador decimal do seu território):
SQL> select 1/3 from dual;

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

Você pode usar set numformat mudar o comportamento:
SQL> set numformat "0D9999"
SQL> select 1/3 from dual;

    1/3
-------
 0.3333

... onde o D representa o separador decimal. Ou você pode usar a formatação de coluna, com um alias de coluna:
SQL> set numformat ""
SQL> column answer format 0.000
SQL> select 1/3 as answer from dual;

ANSWER
------
 0.333

Outros clientes têm maneiras diferentes de controlar a saída padrão; O SQL Developer se comporta da mesma forma, mas o PL/SQL Developer, o Toad etc. talvez não.

Ou você pode formatar o número como parte da consulta, que não depende do cliente:
SQL> select to_char(1/3, '9990D99999') from dual;

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

Você precisa fornecer dígitos suficientes para a parte inteira do que estiver calculando. Qualquer coisa menor que zero é simples, mas se houver muitos dígitos antes do separador decimal, ele não será exibido:
SQL> select to_char(100000/3, '9990D99999') from dual;

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