Oracle
 sql >> Database >  >> RDS >> Oracle

Perché Oracle non mostra la parte intera di un decimale

SQL*Plus lo mostrerà per impostazione predefinita (usando il separatore decimale del tuo territorio):

SQL> select 1/3 from dual;

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

Puoi usare set numformat per modificare il comportamento:

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

    1/3
-------
 0.3333

... dove la D rappresenta il separatore decimale. Oppure potresti usare la formattazione delle colonne, con un alias di colonna:

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

ANSWER
------
 0.333

Altri client hanno modi diversi di controllare l'output predefinito; SQL Developer si comporta più o meno allo stesso modo, ma PL/SQL Developer, Toad ecc. potrebbero non farlo.

Oppure puoi formattare il numero come parte della query, che non dipende dal client:

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

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

Tuttavia, devi fornire cifre sufficienti per la parte intera di qualsiasi cosa tu stia calcolando. Qualsiasi valore inferiore a zero è semplice, ma se ci sono troppe cifre prima del separatore decimale, non verrà visualizzato affatto:

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

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