V Oracle ROUND(number)
funkce vrací číslo zaokrouhlené na daný počet desetinných míst.
Ve výchozím nastavení zaokrouhluje číslo na nula desetinných míst, ale můžete zadat volitelný argument, který určuje počet desetinných míst, která se mají použít.
Oracle má také ROUND(date)
syntaxe, která se používá pro data. Tento článek je výhradně o ROUND(number)
syntaxe, která se používá u čísel.
Syntaxe
Syntaxe vypadá takto:
ROUND(n [, integer ])
Kde n
může být jakýkoli číselný datový typ nebo jakýkoli nečíselný datový typ, který lze implicitně převést na číselný datový typ, a integer
je nepovinné celé číslo, které určuje počet desetinných míst k zaokrouhlení n
do.
Příklad
Zde je příklad:
SELECT ROUND(7.85)
FROM DUAL;
Výsledek:
ROUND(7.85) ______________ 8
Záporná hodnota
Přepnutím na zápornou hodnotu vznikne následující výsledek:
SELECT ROUND(-7.85)
FROM DUAL;
Výsledek:
ROUND(-7.85) _______________ -8
Druhý argument
Zde je příklad poskytnutí druhého argumentu:
SELECT ROUND(7.85, 1)
FROM DUAL;
Výsledek:
ROUND(7.85,1) ________________ 7.9
V tomto případě jsem uvedl, že výsledek by měl být zaokrouhlen na jedno desetinné místo.
Zde je další příklad s větším počtem desetinných míst:
SELECT ROUND(3.14159265359, 4)
FROM DUAL;
Výsledek:
ROUND(3.14159265359,4) _________________________ 3.1416
Záporné zaokrouhlování
Můžete také zadat zápornou hodnotu pro druhý argument. Tím se číslo zaokrouhlí nalevo od desetinné čárky:
SELECT ROUND(75631, -3)
FROM DUAL;
Výsledek:
ROUND(75631,-3) __________________ 76000
Zaokrouhlování nečíselných argumentů
Když se pokusíme zaokrouhlit nečíselný argument, který nelze převést na číselný datový typ, stane se toto:
SELECT ROUND('Bruce')
FROM DUAL;
Výsledek:
Error starting at line : 1 in command - SELECT ROUND('Bruce') FROM DUAL Error report - ORA-01722: invalid number
Data však můžeme zaokrouhlovat – existuje verze této funkce s datem, která nám umožňuje zaokrouhlovat data.
Nulové hodnoty
Pokus o zaokrouhlení null
vrátí null
a pokusíte se zaokrouhlit číslo na null
výsledkem je také null
:
SET NULL 'null';
SELECT
ROUND(null),
ROUND(null, 2),
ROUND(2.345, null)
FROM DUAL;
Výsledek:
ROUND(NULL) ROUND(NULL,2) ROUND(2.345,NULL) ______________ ________________ ____________________ null null null
Ve výchozím nastavení vrátí SQLcl a SQL*Plus prázdné místo vždy, když null
dochází v důsledku SQL SELECT
prohlášení.
Můžete však použít SET NULL
určit jiný řetězec, který má být vrácen. Zde jsem uvedl, že řetězec null
by měl být vrácen.
Nesprávný počet argumentů
Volání ROUND()
bez předání jakýchkoli argumentů vrátí chybu:
SELECT ROUND()
FROM DUAL;
Výsledek:
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 předání nesprávného počtu argumentů má za následek chybu:
SELECT ROUND(1.34, 2, 3)
FROM DUAL;
Výsledek:
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: