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

4 sposoby formatowania liczby bez ułamków dziesiętnych w Oracle

Korzystając z bazy danych Oracle, możesz używać funkcji takich jak TO_CHAR(number) zwracać liczby jako ciąg. Umożliwia to sformatowanie liczby tak, aby miała określoną liczbę miejsc dziesiętnych – w tym bez miejsc dziesiętnych, jeśli tego chcesz.

Możesz także użyć funkcji takich jak ROUND(number) i TRUNC(number) zaokrąglić lub skrócić liczbę bez miejsc po przecinku.

Jest też CAST() funkcja, która pozwala rzutować typ danych jako liczbę całkowitą, co skutecznie usuwa wszystkie miejsca dziesiętne.

TO_CHAR() Funkcja

Oto przykład, w którym użyto TO_CHAR(number) funkcja:

SELECT TO_CHAR(1234.56, 'fm99G999')
FROM DUAL;

Wynik:

1,235

W tym przypadku mój model formatu składa się z:

  • jeden fm , który jest modyfikatorem formatu, który usuwa wszelkie wiodące i/lub końcowe znaki dopełniające, które mogą zostać dodane do wyniku.
  • wiele 9 znaki, które reprezentują każdą cyfrę
  • jeden G znak, który reprezentuje separator grup uwzględniający ustawienia regionalne

Należy zauważyć, że nie używa on D element formatu, który jest znakiem dziesiętnym uwzględniającym format. Nie używa też żadnych literalnych znaków dziesiętnych (takich jak przecinek lub kropka). A ponieważ nie ma żadnych znaków dziesiętnych, oczywiście nie ma cyfr po takim znaku.

Jeśli zrobiliśmy mieć znak dziesiętny, dowolny 9 lub 0 elementy po prawej stronie mogą spowodować uwzględnienie miejsc dziesiętnych w wyniku.

Przykład:

SELECT TO_CHAR(7, 'fm99D00')
FROM DUAL;

Wynik:

7.00

Aby pominąć końcowe zera, możemy zmienić 0 znaków do 9 s. Jednak usunięcie fm modyfikator może spowodować pojawienie się końcowych zer nawet przy użyciu 9 element formatu.

Oto porównanie ilustrujące, co mam na myśli:

SELECT 
    TO_CHAR(7, 'fm99D00') AS "r1",
    TO_CHAR(7, 'fm99D99') AS "r2",
    TO_CHAR(7, '99D99') AS "r3"
FROM DUAL;

Wynik:

     r1    r2        r3 
_______ _____ _________ 
7.00    7.      7.00   

ROUND() Funkcja

Oto przykład, w którym użyto ROUND(number) funkcja:

SELECT ROUND(1234.56, 0)
FROM DUAL;

Wynik:

1,235

ROUND() funkcja zaokrągla liczbę do podanego miejsca dziesiętnego. Tutaj określiliśmy zero miejsc dziesiętnych, co usuwa wszystkie miejsca dziesiętne z liczby.

W tym przypadku liczba została zaokrąglona w górę.

TRUNC() Funkcja

Oto przykład, w którym użyto TRUNC(number) funkcja:

SELECT TRUNC(1234.56, 0)
FROM DUAL;

Wynik:

1234

TRUNC() funkcja obcina liczbę do podanego miejsca dziesiętnego. Nie ma zaokrąglania. Dlatego ta liczba została obcięta do zera miejsc po przecinku, bez zaokrąglania.

CAST() Funkcja

Oto przykład, w którym użyto funkcji CAST() funkcja:

SELECT CAST(1234.56 AS INT) 
FROM DUAL;

Wynik:

1,235

CAST() funkcja konwertuje swój argument na inny typ danych. W tym przypadku zamieniliśmy liczbę na liczbę całkowitą. Liczby całkowite nie mają miejsc dziesiętnych, więc wszystkie części ułamkowe są usuwane z wyniku (łącznie ze znakiem dziesiętnym). Zwróć uwagę, że wynik został zaokrąglony w górę.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle Cloud:tworzenie bazy danych autonomicznego przetwarzania transakcji (ATP)

  2. Jak napisać aplikację .Net, która działa zarówno z SqlServer, jak i Oracle (teraz System.Data.OracleClient jest przestarzały)

  3. Nazwy kolumn cytowania Oracle DB

  4. Czy instrukcja CASE i DECODE są równoważne?

  5. Używanie Dappera z procedurami składowanymi Oracle, które zwracają kursory