MariaDB heeft een FLOOR()
functie en een TRUNCATE()
functie die dezelfde resultaten of verschillende resultaten kan retourneren, afhankelijk van de exacte waarde van hun argumenten.
Hieronder volgt een kort overzicht van het verschil tussen FLOOR()
en TRUNCATE()
in MariaDB.
Het verschil
Hier is het verschil tussen elke functie in een notendop:
FLOOR()
geeft de grootste gehele waarde terug die niet groter is dan zijn argument.TRUNCATE()
kapt zijn argument af tot een bepaald aantal decimalen.
Syntaxis
Ten eerste zijn hier de syntaxis van elke functie.
FLOOR()
De syntaxis voor FLOOR()
gaat als volgt:
FLOOR(X)
Het geeft de grootste gehele waarde terug die niet groter is dan X
.
TRUNCATE()
De syntaxis voor TRUNCATE()
gaat als volgt:
TRUNCATE(X,D)
TRUNCATE()
geeft het getal X
. terug , afgekapt tot D
decimalen.
Voorbeeld
Hier is een vergelijking om het verschil aan te tonen tussen FLOOR()
en TRUNCATE()
:
SELECT
FLOOR(-3.6789),
TRUNCATE(-3.6789, 0);
Resultaat:
+----------------+----------------------+ | FLOOR(-3.6789) | TRUNCATE(-3.6789, 0) | +----------------+----------------------+ | -4 | -3 | +----------------+----------------------+
In dit geval is het getal een negatieve waarde en is het resultaat van elke functie anders.
FLOOR()
gaf het grootste gehele getal terug (-4
) waarde niet groter is dan het argument.- De
TRUNCATE()
functie aan de andere kant, het getal op de opgegeven decimale plaats gewoon afgekapt.
Hetzelfde resultaat
Beide functies kunnen soms hetzelfde resultaat opleveren. Het hangt allemaal af van de waarde van de argumenten die worden doorgegeven.
Als we de getallen veranderen in positieve waarden, geven beide functies hetzelfde resultaat:
SELECT
FLOOR(3.6789),
TRUNCATE(3.6789, 0);
Resultaat:
+---------------+---------------------+ | FLOOR(3.6789) | TRUNCATE(3.6789, 0) | +---------------+---------------------+ | 3 | 3 | +---------------+---------------------+
Het tweede argument
Een ander duidelijk verschil tussen de twee functies is dat TRUNCATE()
accepteert/vereist een tweede argument. Dit kan resulteren in een resultaat dat een fractioneel deel bevat.
FLOOR()
retourneert echter alleen een geheel getal, dus er wordt nooit een fractioneel deel geretourneerd.
Voorbeeld
SELECT
FLOOR(3.6789),
TRUNCATE(3.6789, 2);
Resultaat:
+---------------+---------------------+ | FLOOR(3.6789) | TRUNCATE(3.6789, 2) | +---------------+---------------------+ | 3 | 3.67 | +---------------+---------------------+
De ROUND()
Functie
Beide functies zijn anders dan de ROUND()
functie, die zijn argument afrondt op een bepaald aantal decimalen.