sql >> Databasteknik >  >> RDS >> Oracle

FLOOR() Funktion i Oracle

I Oracle, FLOOR() funktion returnerar det största heltal som är lika med eller mindre än dess argument.

Syntax

Syntaxen ser ut så här:

FLOOR(n)

Där n kan vara vilken numerisk datatyp som helst eller vilken icke-numerisk datatyp som helst som implicit kan konverteras till en numerisk datatyp.

Exempel

Här är ett exempel:

SELECT FLOOR(1.85)
FROM DUAL;

Resultat:

   FLOOR(1.85) 
______________ 
             1 

Om du ändrar det till ett negativt värde får du följande resultat:

SELECT FLOOR(-1.85)
FROM DUAL;

Resultat:

   FLOOR(-1.85) 
_______________ 
             -2 

Jämfört med ROUND()

FLOOR() funktionen skiljer sig från ROUND() fungera. ROUND() funktion skulle avrunda talet uppåt i vissa fall och nedåt i andra. FLOOR() å andra sidan, returnerar alltid det största heltal som är lika med eller mindre än dess argument.

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

Resultat:

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

Även ROUND() tillåter oss att ange antalet decimaler som ska avrundas till:

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

Resultat:

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

Icke-numeriskt argument

Argumentet kan vara vilken numerisk datatyp som helst eller vilken icke-numerisk datatyp som helst som implicit kan konverteras till en numerisk datatyp.

Så här händer när vi tillhandahåller ett icke-numeriskt argument som inte kan konverteras till en numerisk datatyp:

SELECT FLOOR('Bruce')
FROM DUAL;

Resultat:

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

Nullvärden

Skickar null till FLOOR() returnerar null :

SET NULL 'null';

SELECT FLOOR(null)
FROM DUAL;

Resultat:

   FLOOR(NULL) 
______________ 
          null

Som standard returnerar SQLcl och SQL*Plus ett tomt utrymme när null uppstår som ett resultat av en SQL SELECT påstående.

Du kan dock använda SET NULL för att ange en annan sträng som ska returneras. Här specificerade jag att strängen null bör returneras.

Inkorrekt antal argument

Anropar FLOOR() utan att skicka några argument returnerar ett fel:

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:

Och att skicka fel antal argument resulterar i ett fel:

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 också en CEIL() funktion som returnerar det minsta heltal som är större än eller lika med dess argument.


  1. Oracle MINUS Operatör förklaras

  2. Vad är det maximala antalet kolumner i en PostgreSQL-valfråga

  3. Skicka värden som läses från en fil som indata till en SQL-fråga i Oracle

  4. Java:Infoga flera rader i MySQL med PreparedStatement