I Oracle er FLOOR()
funktion returnerer det største heltal lig med eller mindre end dets argument.
Syntaks
Syntaksen ser sådan ud:
FLOOR(n)
Hvor n
kan være enhver numerisk datatype eller enhver ikke-numerisk datatype, der implicit kan konverteres til en numerisk datatype.
Eksempel
Her er et eksempel:
SELECT FLOOR(1.85)
FROM DUAL;
Resultat:
FLOOR(1.85) ______________ 1
Skift til en negativ værdi giver følgende resultat:
SELECT FLOOR(-1.85)
FROM DUAL;
Resultat:
FLOOR(-1.85) _______________ -2
Sammenlignet med ROUND()
FLOOR()
funktionen er forskellig fra ROUND()
fungere. ROUND()
funktion ville runde tallet op i nogle tilfælde og nedad i andre. FLOOR()
på den anden side returnerer altid det største heltal lig med eller mindre end dets argument.
SELECT
FLOOR(1.85),
ROUND(1.85)
FROM DUAL;
Resultat:
FLOOR(1.85) ROUND(1.85) ______________ ______________ 1 2
Også ROUND()
giver os mulighed for at angive antallet af decimaler, der skal afrundes til:
SELECT
FLOOR(1.85),
ROUND(1.85, 1)
FROM DUAL;
Resultat:
FLOOR(1.85) ROUND(1.85,1) ______________ ________________ 1 1.9
Ikke-numerisk argument
Argumentet kan være enhver numerisk datatype eller enhver ikke-numerisk datatype, der implicit kan konverteres til en numerisk datatype.
Her er, hvad der sker, når vi angiver et ikke-numerisk argument, der ikke kan konverteres til en numerisk datatype:
SELECT FLOOR('Bruce')
FROM DUAL;
Resultat:
Error starting at line : 1 in command - SELECT FLOOR('Bruce') FROM DUAL Error report - ORA-01722: invalid number
Nul-værdier
Sender null
til FLOOR()
returnerer null
:
SET NULL 'null';
SELECT FLOOR(null)
FROM DUAL;
Resultat:
FLOOR(NULL) ______________ null
Som standard returnerer SQLcl og SQL*Plus et tomt mellemrum, når null
opstår som et resultat af en SQL SELECT
udmelding.
Du kan dog bruge SET NULL
for at angive en anden streng, der skal returneres. Her specificerede jeg, at strengen null
skal returneres.
Forkert antal argumenter
Kalder FLOOR()
uden at sende nogen argumenter returnerer en fejl:
SELECT FLOOR()
FROM DUAL;
Resultat:
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:
Og at sende det forkerte antal argumenter resulterer i en fejl:
SELECT FLOOR(1, 2)
FROM DUAL;
Resultat:
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 har også en CEIL()
funktion, der returnerer det mindste heltal, der er større end eller lig med dets argument.