Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Dlaczego oracle nie pokazuje całkowitej części ułamka dziesiętnego

SQL*Plus pokaże to domyślnie (używając separatora dziesiętnego Twojego terytorium):

SQL> select 1/3 from dual;

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

Możesz użyć set numformat aby zmienić zachowanie:

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

    1/3
-------
 0.3333

... gdzie D oznacza separator dziesiętny. Możesz też użyć formatowania kolumny z aliasem kolumny:

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

ANSWER
------
 0.333

Inni klienci mają różne sposoby kontrolowania domyślnego wyjścia; SQL Developer zachowuje się prawie tak samo, ale PL/SQL Developer, Toad itp. mogą nie.

Możesz też sformatować liczbę jako część zapytania, która nie jest zależna od klienta:

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

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

Musisz jednak podać wystarczającą liczbę cyfr dla części całkowitej tego, co obliczasz. Wszystko mniejsze od zera jest proste, ale jeśli przed separatorem dziesiętnym jest zbyt wiele cyfr, to w ogóle się nie wyświetli:

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

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. nie można zapisać danych o dużym rozmiarze za pomocą UTL_FILE.PUT_LINE

  2. warunkowa instrukcja select w oracle

  3. SQL wielokrotne zapytanie SELECT z funkcją xmlagg - dane nie są pobierane w wymagany sposób

  4. Spring's Stored Procedure - wyniki powracające z procedury są zawsze puste

  5. Błąd aktualizacji Liquibase