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: