sql >> Databáze >  >> RDS >> Oracle

ROUND(číslo) Funkce v Oracle

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:

  1. Najděte jiné znaky než ASCII ve sloupcích varchar pomocí SQL Server

  2. Jak mohu prohledávat všechny sloupce v tabulce?

  3. C# s parametry INSERT MySQL

  4. Nasazení a správa MySQL NDB Cluster s ClusterControl