En Oracle, el ROUND(number)
La función devuelve un número redondeado a un número dado de lugares decimales.
De manera predeterminada, redondea el número a cero lugares decimales, pero puede proporcionar un argumento opcional que especifique el número de lugares decimales a usar.
Oracle también tiene un ROUND(date)
sintaxis, que se utiliza en las fechas. Este artículo es únicamente sobre el ROUND(number)
sintaxis, que se utiliza en los números.
Sintaxis
La sintaxis es así:
ROUND(n [, integer ])
Donde n
puede ser cualquier tipo de dato numérico o cualquier tipo de dato no numérico que se pueda convertir implícitamente a un tipo de dato numérico, y integer
es un entero opcional que especifica el número de lugares decimales para redondear n
a.
Ejemplo
He aquí un ejemplo:
SELECT ROUND(7.85)
FROM DUAL;
Resultado:
ROUND(7.85) ______________ 8
Valor negativo
Cambiarlo a un valor negativo produce el siguiente resultado:
SELECT ROUND(-7.85)
FROM DUAL;
Resultado:
ROUND(-7.85) _______________ -8
Segundo Argumento
Aquí hay un ejemplo de proporcionar un segundo argumento:
SELECT ROUND(7.85, 1)
FROM DUAL;
Resultado:
ROUND(7.85,1) ________________ 7.9
En este caso, especifiqué que el resultado debe redondearse a un decimal.
Aquí hay otro ejemplo con una mayor cantidad de lugares decimales:
SELECT ROUND(3.14159265359, 4)
FROM DUAL;
Resultado:
ROUND(3.14159265359,4) _________________________ 3.1416
Redondeo negativo
También puede especificar un valor negativo para el segundo argumento. Al hacerlo, se redondea el número a la izquierda del punto decimal:
SELECT ROUND(75631, -3)
FROM DUAL;
Resultado:
ROUND(75631,-3) __________________ 76000
Redondeo de argumentos no numéricos
Esto es lo que sucede cuando tratamos de redondear un argumento no numérico que no se puede convertir a un tipo de datos 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
Sin embargo, podemos redondear fechas; hay una versión de fecha de esta función que nos permite redondear fechas.
Valores nulos
Intentando redondear null
devuelve null
y tratando de redondear un número por null
también da como resultado 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
De forma predeterminada, SQLcl y SQL*Plus devuelven un espacio en blanco cada vez que null
ocurre como resultado de un SQL SELECT
declaración.
Sin embargo, puede usar SET NULL
para especificar una cadena diferente a devolver. Aquí especifiqué que la cadena null
debe ser devuelto.
Recuento de argumentos incorrecto
Llamando a ROUND()
sin pasar ningún argumento devuelve un error:
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:
Y pasar el número incorrecto de argumentos da como resultado un error:
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: