MariaDB har en FLOOR()
funktion och en TRUNCATE()
funktion som kan returnera samma resultat eller olika resultat, beroende på det exakta värdet av deras argument.
Nedan är en snabb sammanfattning av skillnaden mellan FLOOR()
och TRUNCATE()
i MariaDB.
Skillnaden
Här är skillnaden mellan varje funktion i ett nötskal:
FLOOR()
returnerar det största heltalsvärdet som inte är större än dess argument.TRUNCATE()
trunkerar sitt argument till ett specificerat antal decimaler.
Syntax
Först, här är syntaxerna för varje funktion.
FLOOR()
Syntaxen för FLOOR()
går så här:
FLOOR(X)
Den returnerar det största heltalsvärdet som inte är större än X
.
TRUNCATE()
Syntaxen för TRUNCATE()
går så här:
TRUNCATE(X,D)
TRUNCATE()
returnerar talet X
, trunkerad till D
decimaler.
Exempel
Här är en jämförelse för att visa skillnaden mellan FLOOR()
och TRUNCATE()
:
SELECT
FLOOR(-3.6789),
TRUNCATE(-3.6789, 0);
Resultat:
+----------------+----------------------+ | FLOOR(-3.6789) | TRUNCATE(-3.6789, 0) | +----------------+----------------------+ | -4 | -3 | +----------------+----------------------+
I det här fallet är talet ett negativt värde och resultatet från varje funktion är olika.
FLOOR()
returnerade det största heltal (-4
) värde inte större än dess argument.-
TRUNCATE()
funktion å andra sidan, trunkerade helt enkelt talet med den angivna decimalen.
Samma resultat
Båda funktionerna kan ibland returnera samma resultat. Allt beror på värdet av argumenten som skickas.
Om vi ändrar siffrorna till positiva värden returnerar båda funktionerna samma resultat:
SELECT
FLOOR(3.6789),
TRUNCATE(3.6789, 0);
Resultat:
+---------------+---------------------+ | FLOOR(3.6789) | TRUNCATE(3.6789, 0) | +---------------+---------------------+ | 3 | 3 | +---------------+---------------------+
Det andra argumentet
En annan uppenbar skillnad mellan de två funktionerna är att TRUNCATE()
accepterar/kräver ett andra argument. Detta kan resultera i ett resultat som innehåller en bråkdel.
FLOOR()
returnerar dock bara ett heltal, så ingen bråkdel returneras någonsin.
Exempel
SELECT
FLOOR(3.6789),
TRUNCATE(3.6789, 2);
Resultat:
+---------------+---------------------+ | FLOOR(3.6789) | TRUNCATE(3.6789, 2) | +---------------+---------------------+ | 3 | 3.67 | +---------------+---------------------+
ROUND()
Funktion
Båda funktionerna skiljer sig från ROUND()
funktion, som avrundar sitt argument till ett visst antal decimaler.