В Oracle, ROUND(number)
функцията връща число, закръглено до определен брой десетични знака.
По подразбиране закръглява числото до нула десетични знака, но можете да предоставите незадължителен аргумент, който определя броя на десетичните знаци за използване.
Oracle също има ROUND(date)
синтаксис, който се използва за дати. Тази статия е само за ROUND(number)
синтаксис, който се използва за числа.
Синтаксис
Синтаксисът е така:
ROUND(n [, integer ])
Където n
може да бъде всеки числов тип данни или всеки нечисловен тип данни, който може да бъде имплицитно преобразуван в числов тип данни, и integer
е незадължително цяло число, което определя броя на десетичните знаци за закръгляване на n
до.
Пример
Ето един пример:
SELECT ROUND(7.85)
FROM DUAL;
Резултат:
ROUND(7.85) ______________ 8
Отрицателна стойност
Превключването му на отрицателна стойност води до следния резултат:
SELECT ROUND(-7.85)
FROM DUAL;
Резултат:
ROUND(-7.85) _______________ -8
Втори аргумент
Ето пример за предоставяне на втори аргумент:
SELECT ROUND(7.85, 1)
FROM DUAL;
Резултат:
ROUND(7.85,1) ________________ 7.9
В този случай уточних, че резултатът трябва да бъде закръглен до един знак след десетичната запетая.
Ето още един пример с по-голям брой десетични знаци:
SELECT ROUND(3.14159265359, 4)
FROM DUAL;
Резултат:
ROUND(3.14159265359,4) _________________________ 3.1416
Отрицателно закръгляване
Можете също да посочите отрицателна стойност за втория аргумент. По този начин числото се закръглява вляво от десетичната запетая:
SELECT ROUND(75631, -3)
FROM DUAL;
Резултат:
ROUND(75631,-3) __________________ 76000
Закръгляване на нечислови аргументи
Ето какво се случва, когато се опитаме да закръглим нечислов аргумент, който не може да бъде преобразуван в числов тип данни:
SELECT ROUND('Bruce')
FROM DUAL;
Резултат:
Error starting at line : 1 in command - SELECT ROUND('Bruce') FROM DUAL Error report - ORA-01722: invalid number
Въпреки това можем да закръгляме датите – има версия за дата на тази функция, която ни позволява да закръгляме датите.
Нулеви стойности
Опитвам се да закръгля null
връща null
и се опитва да закръгли число с null
също води до null
:
SET NULL 'null';
SELECT
ROUND(null),
ROUND(null, 2),
ROUND(2.345, null)
FROM DUAL;
Резултат:
ROUND(NULL) ROUND(NULL,2) ROUND(2.345,NULL) ______________ ________________ ____________________ null null null
По подразбиране SQLcl и SQL*Plus връщат празно пространство всеки път, когато null
възниква в резултат на SQL SELECT
изявление.
Можете обаче да използвате SET NULL
за да посочите различен низ, който да бъде върнат. Тук посочих, че низът null
трябва да бъдат върнати.
Неправилен брой аргументи
Извикване на ROUND()
без подаване на аргументи връща грешка:
SELECT ROUND()
FROM DUAL;
Резултат:
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:
И предаването на грешен брой аргументи води до грешка:
SELECT ROUND(1.34, 2, 3)
FROM DUAL;
Резултат:
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: