Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Função ROUND(número) no Oracle


No Oracle, o ROUND(number) A função retorna um número arredondado para um determinado número de casas decimais.

Por padrão, ele arredonda o número para zero casas decimais, mas você pode fornecer um argumento opcional que especifica o número de casas decimais a serem usadas.

O Oracle também tem um ROUND(date) sintaxe, que é usada em datas. Este artigo é apenas sobre o ROUND(number) sintaxe, que é usada em números.

Sintaxe


A sintaxe fica assim:
ROUND(n [, integer ])

Onde n pode ser qualquer tipo de dados numérico ou qualquer tipo de dados não numérico que possa ser convertido implicitamente em um tipo de dados numérico e integer é um inteiro opcional que especifica o número de casas decimais para arredondar n para.

Exemplo


Aqui está um exemplo:
SELECT ROUND(7.85)
FROM DUAL;

Resultado:
   ROUND(7.85) 
______________ 
             8 

Valor Negativo


Mudar para um valor negativo produz o seguinte resultado:
SELECT ROUND(-7.85)
FROM DUAL;

Resultado:
   ROUND(-7.85) 
_______________ 
             -8

Segundo argumento


Aqui está um exemplo de como fornecer um segundo argumento:
SELECT ROUND(7.85, 1)
FROM DUAL;

Resultado:
   ROUND(7.85,1) 
________________ 
             7.9

Nesse caso, especifiquei que o resultado deveria ser arredondado para uma casa decimal.

Aqui está outro exemplo com um número maior de casas decimais:
SELECT ROUND(3.14159265359, 4)
FROM DUAL;

Resultado:
   ROUND(3.14159265359,4) 
_________________________ 
                   3.1416

Arredondamento negativo


Você também pode especificar um valor negativo para o segundo argumento. Fazê-lo arredonda o número à esquerda da vírgula:
SELECT ROUND(75631, -3)
FROM DUAL;

Resultado:
   ROUND(75631,-3) 
__________________ 
             76000

Argumentos não numéricos de arredondamento


Veja o que acontece quando tentamos arredondar um argumento não numérico que não pode ser convertido em um tipo de dados numérico:
SELECT ROUND('Bruce')
FROM DUAL;

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

No entanto, podemos arredondar datas – existe uma versão de data desta função que nos permite arredondar datas.

Valores nulos


Tentando arredondar null retorna null , e tentando arredondar um número por null também resulta em null :
SET NULL 'null';

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

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

Por padrão, SQLcl e SQL*Plus retornam um espaço em branco sempre que null ocorre como resultado de um SQL SELECT demonstração.

No entanto, você pode usar SET NULL para especificar uma string diferente a ser retornada. Aqui eu especifiquei que a string null deve ser devolvido.

Contagem incorreta de argumentos


Chamando ROUND() sem passar nenhum argumento retorna um erro:
SELECT ROUND()
FROM DUAL;

Resultado:
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:

E passar o número errado de argumentos resulta em um erro:
SELECT ROUND(1.34, 2, 3)
FROM DUAL;

Resultado:
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: