Oracle
 sql >> Base de données >  >> RDS >> Oracle

Pourquoi Oracle n'affiche pas la partie entière d'un nombre décimal

SQL*Plus affichera cela par défaut (en utilisant le séparateur décimal de votre territoire) :

SQL> select 1/3 from dual;

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

Vous pouvez utiliser set numformat pour changer le comportement :

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

    1/3
-------
 0.3333

... où le D représente le séparateur décimal. Ou vous pouvez utiliser le formatage des colonnes, avec un alias de colonne :

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

ANSWER
------
 0.333

D'autres clients ont différentes manières de contrôler la sortie par défaut; SQL Developer se comporte à peu près de la même manière, mais PL/SQL Developer, Toad, etc. pourraient ne pas l'être.

Ou vous pouvez formater le nombre dans le cadre de la requête, qui ne dépend pas du client :

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

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

Vous devez cependant fournir suffisamment de chiffres pour la partie entière de tout ce que vous calculez. Tout ce qui est inférieur à zéro est simple, mais s'il y a trop de chiffres avant le séparateur décimal, il ne s'affichera pas du tout :

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

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