sql >> Base de Datos >  >> RDS >> Oracle

Función ROUND (número) en Oracle

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: