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: