MariaDB har en FLOOR()
funktion og en TRUNCATE()
funktion, der kan returnere de samme resultater eller forskellige resultater, afhængigt af den nøjagtige værdi af deres argumenter.
Nedenfor er en hurtig gennemgang af forskellen mellem FLOOR()
og TRUNCATE()
i MariaDB.
Forskellen
Her er forskellen mellem hver funktion i en nøddeskal:
FLOOR()
returnerer den største heltalværdi, der ikke er større end dens argument.TRUNCATE()
afkorter sit argument til et bestemt antal decimaler.
Syntaks
For det første er her syntakserne for hver funktion.
FLOOR()
Syntaksen for FLOOR()
går sådan her:
FLOOR(X)
Det returnerer den største heltalværdi, der ikke er større end X
.
TRUNCATE()
Syntaksen for TRUNCATE()
går sådan her:
TRUNCATE(X,D)
TRUNCATE()
returnerer tallet X
, afkortet til D
decimaler.
Eksempel
Her er en sammenligning for at demonstrere forskellen mellem FLOOR()
og TRUNCATE()
:
SELECT
FLOOR(-3.6789),
TRUNCATE(-3.6789, 0);
Resultat:
+----------------+----------------------+ | FLOOR(-3.6789) | TRUNCATE(-3.6789, 0) | +----------------+----------------------+ | -4 | -3 | +----------------+----------------------+
I dette tilfælde er tallet en negativ værdi, og resultatet fra hver funktion er forskelligt.
FLOOR()
returnerede det største heltal (-4
) værdi ikke større end dens argument.-
TRUNCATE()
funktion på den anden side blot afkortede tallet med den angivne decimal.
Samme resultat
Begge funktioner kan nogle gange returnere det samme resultat. Det hele afhænger af værdien af de argumenter, der sendes.
Hvis vi ændrer tallene til positive værdier, returnerer begge funktioner det samme resultat:
SELECT
FLOOR(3.6789),
TRUNCATE(3.6789, 0);
Resultat:
+---------------+---------------------+ | FLOOR(3.6789) | TRUNCATE(3.6789, 0) | +---------------+---------------------+ | 3 | 3 | +---------------+---------------------+
Det andet argument
En anden åbenlys forskel mellem de to funktioner er, at TRUNCATE()
accepterer/kræver et andet argument. Dette kan resultere i et resultat, der indeholder en brøkdel.
FLOOR()
returnerer dog kun et heltal, så ingen brøkdel returneres nogensinde.
Eksempel
SELECT
FLOOR(3.6789),
TRUNCATE(3.6789, 2);
Resultat:
+---------------+---------------------+ | FLOOR(3.6789) | TRUNCATE(3.6789, 2) | +---------------+---------------------+ | 3 | 3.67 | +---------------+---------------------+
ROUND()
Funktion
Begge funktioner er forskellige fra ROUND()
funktion, som afrunder sit argument til et bestemt antal decimaler.