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

Función FLOOR() en Oracle

En Oracle, el FLOOR() la función devuelve el entero más grande igual o menor que su argumento.

Sintaxis

La sintaxis es así:

FLOOR(n)

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.

Ejemplo

He aquí un ejemplo:

SELECT FLOOR(1.85)
FROM DUAL;

Resultado:

   FLOOR(1.85) 
______________ 
             1 

Cambiarlo a un valor negativo produce el siguiente resultado:

SELECT FLOOR(-1.85)
FROM DUAL;

Resultado:

   FLOOR(-1.85) 
_______________ 
             -2 

Comparado con ROUND()

El FLOOR() la función es diferente a ROUND() función. El ROUND() La función redondearía el número hacia arriba en algunos casos y hacia abajo en otros. FLOOR() por otro lado, siempre devuelve el entero más grande igual o menor que su argumento.

SELECT 
    FLOOR(1.85),
    ROUND(1.85)
FROM DUAL;

Resultado:

   FLOOR(1.85)    ROUND(1.85) 
______________ ______________ 
             1              2 

Además, ROUND() nos permite especificar el número de decimales a redondear:

SELECT 
    FLOOR(1.85),
    ROUND(1.85, 1)
FROM DUAL;

Resultado:

   FLOOR(1.85)    ROUND(1.85,1) 
______________ ________________ 
             1              1.9 

Argumento no numérico

El argumento puede ser cualquier tipo de datos numéricos o cualquier tipo de datos no numéricos que se pueda convertir implícitamente en un tipo de datos numéricos.

Esto es lo que sucede cuando proporcionamos un argumento no numérico que no se puede convertir a un tipo de datos numérico:

SELECT FLOOR('Bruce')
FROM DUAL;

Resultado:

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

Valores nulos

Pasando null a FLOOR() devuelve null :

SET NULL 'null';

SELECT FLOOR(null)
FROM DUAL;

Resultado:

   FLOOR(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 FLOOR() sin pasar ningún argumento devuelve un error:

SELECT FLOOR()
FROM DUAL;

Resultado:

Error starting at line : 1 in command -
SELECT FLOOR()
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00909: invalid number of arguments
00909. 00000 -  "invalid number of arguments"
*Cause:    
*Action:

Y pasar el número incorrecto de argumentos da como resultado un error:

SELECT FLOOR(1, 2)
FROM DUAL;

Resultado:

Error starting at line : 1 in command -
SELECT FLOOR(1, 2)
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00909: invalid number of arguments
00909. 00000 -  "invalid number of arguments"
*Cause:    
*Action:

Oracle también tiene un CEIL() función que devuelve el entero más pequeño que es mayor o igual que su argumento.