sql >> Databasteknik >  >> RDS >> Oracle

Varför Oracle inte visar heltalsdelen av en decimal

SQL*Plus visar det som standard (med ditt territoriums decimalavgränsare):

SQL> select 1/3 from dual;

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

Du kan använda set numformat för att ändra beteendet:

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

    1/3
-------
 0.3333

... där D representerar decimalavgränsaren. Eller så kan du använda kolumnformatering, med ett kolumnalias:

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

ANSWER
------
 0.333

Andra klienter har olika sätt att styra standardutgången; SQL Developer beter sig ungefär likadant, men PL/SQL Developer, Toad etc. kanske inte.

Eller så kan du formatera numret som en del av frågan, som inte är klientberoende:

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

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

Du måste dock ange tillräckligt med siffror för heltalsdelen av vad du än beräknar. Allt mindre än noll är enkelt, men om det finns för många siffror före decimalavgränsaren kommer det inte att visas alls:

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

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



  1. PDO multi infoga uttalande

  2. Hur många kolumner kan du ha (max) i en MySQL-tabell?

  3. MySQL group_concat_max_len i en fråga

  4. SQLException :Sträng eller binär data skulle trunkeras