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.