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: