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

ROUND(liczba) Funkcja w Oracle

W Oracle ROUND(number) funkcja zwraca liczbę zaokrągloną do podanej liczby miejsc po przecinku.

Domyślnie zaokrągla liczbę do zera miejsc dziesiętnych, ale możesz podać opcjonalny argument, który określa liczbę miejsc dziesiętnych do użycia.

Oracle ma również ROUND(date) składnia, która jest używana w datach. Ten artykuł dotyczy wyłącznie ROUND(number) składnia, która jest używana na liczbach.

Składnia

Składnia wygląda tak:

ROUND(n [, integer ])

Gdzie n może być dowolnym liczbowym typem danych lub dowolnym nienumerycznym typem danych, który można niejawnie przekonwertować na numeryczny typ danych oraz integer jest opcjonalną liczbą całkowitą, która określa liczbę miejsc dziesiętnych do zaokrąglenia n do.

Przykład

Oto przykład:

SELECT ROUND(7.85)
FROM DUAL;

Wynik:

   ROUND(7.85) 
______________ 
             8 

Wartość ujemna

Przełączenie go na wartość ujemną daje następujący wynik:

SELECT ROUND(-7.85)
FROM DUAL;

Wynik:

   ROUND(-7.85) 
_______________ 
             -8

Drugi argument

Oto przykład podania drugiego argumentu:

SELECT ROUND(7.85, 1)
FROM DUAL;

Wynik:

   ROUND(7.85,1) 
________________ 
             7.9

W tym przypadku określiłem, że wynik powinien być zaokrąglony do jednego miejsca po przecinku.

Oto kolejny przykład z większą liczbą miejsc po przecinku:

SELECT ROUND(3.14159265359, 4)
FROM DUAL;

Wynik:

   ROUND(3.14159265359,4) 
_________________________ 
                   3.1416

Zaokrąglanie ujemne

Możesz również podać wartość ujemną dla drugiego argumentu. Spowoduje to zaokrąglenie liczby do lewej strony przecinka dziesiętnego:

SELECT ROUND(75631, -3)
FROM DUAL;

Wynik:

   ROUND(75631,-3) 
__________________ 
             76000

Zaokrąglanie argumentów nieliczbowych

Oto, co się dzieje, gdy próbujemy zaokrąglić argument nieliczbowy, którego nie można przekonwertować na numeryczny typ danych:

SELECT ROUND('Bruce')
FROM DUAL;

Wynik:

Error starting at line : 1 in command -
SELECT ROUND('Bruce')
FROM DUAL
Error report -
ORA-01722: invalid number

Możemy jednak zaokrąglać daty – istnieje wersja tej funkcji, która pozwala nam zaokrąglać daty.

Wartości puste

Próbuję zaokrąglić null zwraca null i próba zaokrąglenia liczby przez null powoduje również null :

SET NULL 'null';

SELECT 
    ROUND(null),
    ROUND(null, 2),    
    ROUND(2.345, null)
FROM DUAL;

Wynik:

   ROUND(NULL)    ROUND(NULL,2)    ROUND(2.345,NULL) 
______________ ________________ ____________________ 
          null             null                 null 

Domyślnie SQLcl i SQL*Plus zwracają spację, gdy null występuje w wyniku polecenia SQL SELECT oświadczenie.

Możesz jednak użyć SET NULL aby określić inny ciąg do zwrócenia. Tutaj określiłem, że ciąg null należy zwrócić.

Nieprawidłowa liczba argumentów

Wywołanie ROUND() bez przekazywania żadnych argumentów zwraca błąd:

SELECT ROUND()
FROM DUAL;

Wynik:

Error starting at line : 1 in command -
SELECT ROUND()
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00938: not enough arguments for function
00938. 00000 -  "not enough arguments for function"
*Cause:    
*Action:

A przekazanie niewłaściwej liczby argumentów skutkuje błędem:

SELECT ROUND(1.34, 2, 3)
FROM DUAL;

Wynik:

Error starting at line : 1 in command -
SELECT ROUND(1.34, 2, 3)
FROM DUAL
Error at Command Line : 1 Column : 23
Error report -
SQL Error: ORA-00939: too many arguments for function
00939. 00000 -  "too many arguments for function"
*Cause:    
*Action:

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wyświetlić datę w innym formacie w Oracle?

  2. Używanie nazw usług Oracle z SQLAlchemy

  3. Funkcja JSON_ARRAY() w Oracle

  4. Dlaczego Oracle wyświetla ??? dla znaków specjalnych, takich jak åäö

  5. oracle diff:jak porównać dwie tabele?