In Oracle is de FLOOR()
functie retourneert het grootste gehele getal gelijk aan of kleiner dan zijn argument.
Syntaxis
De syntaxis gaat als volgt:
FLOOR(n)
Waar n
kan elk numeriek gegevenstype zijn of elk niet-numeriek gegevenstype dat impliciet kan worden geconverteerd naar een numeriek gegevenstype.
Voorbeeld
Hier is een voorbeeld:
SELECT FLOOR(1.85)
FROM DUAL;
Resultaat:
FLOOR(1.85) ______________ 1
Het overschakelen naar een negatieve waarde levert het volgende resultaat op:
SELECT FLOOR(-1.85)
FROM DUAL;
Resultaat:
FLOOR(-1.85) _______________ -2
Vergeleken met ROUND()
De FLOOR()
functie is anders dan de ROUND()
functie. De ROUND()
functie zou het getal in sommige gevallen naar boven afronden en in andere naar beneden. FLOOR()
aan de andere kant, retourneert altijd het grootste gehele getal dat gelijk is aan of kleiner is dan zijn argument.
SELECT
FLOOR(1.85),
ROUND(1.85)
FROM DUAL;
Resultaat:
FLOOR(1.85) ROUND(1.85) ______________ ______________ 1 2
Ook ROUND()
stelt ons in staat om het aantal decimalen te specificeren waarop moet worden afgerond:
SELECT
FLOOR(1.85),
ROUND(1.85, 1)
FROM DUAL;
Resultaat:
FLOOR(1.85) ROUND(1.85,1) ______________ ________________ 1 1.9
Niet-numeriek argument
Het argument kan elk numeriek gegevenstype zijn of elk niet-numeriek gegevenstype dat impliciet kan worden geconverteerd naar een numeriek gegevenstype.
Dit is wat er gebeurt als we een niet-numeriek argument opgeven dat niet kan worden geconverteerd naar een numeriek gegevenstype:
SELECT FLOOR('Bruce')
FROM DUAL;
Resultaat:
Error starting at line : 1 in command - SELECT FLOOR('Bruce') FROM DUAL Error report - ORA-01722: invalid number
Null-waarden
Doorgeven van null
naar FLOOR()
retourneert null
:
SET NULL 'null';
SELECT FLOOR(null)
FROM DUAL;
Resultaat:
FLOOR(NULL) ______________ null
Standaard retourneren SQLcl en SQL*Plus een spatie wanneer null
treedt op als resultaat van een SQL SELECT
uitspraak.
U kunt echter SET NULL
. gebruiken om een andere tekenreeks op te geven die moet worden geretourneerd. Hier heb ik gespecificeerd dat de string null
moet worden geretourneerd.
Onjuist aantal argumenten
Bellen FLOOR()
zonder het doorgeven van argumenten geeft een fout:
SELECT FLOOR()
FROM DUAL;
Resultaat:
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:
En het doorgeven van het verkeerde aantal argumenten resulteert in een fout:
SELECT FLOOR(1, 2)
FROM DUAL;
Resultaat:
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 heeft ook een CEIL()
functie die het kleinste gehele getal retourneert dat groter is dan of gelijk is aan zijn argument.