Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Warum Oracle den ganzzahligen Teil einer Dezimalzahl nicht anzeigt

SQL*Plus zeigt dies standardmäßig an (unter Verwendung des Dezimaltrennzeichens Ihres Gebiets):

SQL> select 1/3 from dual;

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

Sie könnten set numformat um das Verhalten zu ändern:

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

    1/3
-------
 0.3333

... wobei das D das Dezimaltrennzeichen darstellt. Oder Sie könnten die Spaltenformatierung mit einem Spaltenalias verwenden:

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

ANSWER
------
 0.333

Andere Clients haben andere Möglichkeiten, die Standardausgabe zu steuern; SQL Developer verhält sich ähnlich, aber PL/SQL Developer, Toad usw. möglicherweise nicht.

Oder Sie können die Nummer als Teil der Abfrage formatieren, was nicht mandantenabhängig ist:

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

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

Sie müssen jedoch genügend Ziffern für den ganzzahligen Teil dessen angeben, was Sie berechnen. Alles kleiner als Null ist einfach, aber wenn vor dem Dezimaltrennzeichen zu viele Ziffern stehen, wird es überhaupt nicht angezeigt:

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

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