I MariaDB, ROUND() er en indbygget numerisk funktion, der afrunder sit argument til et givet antal decimaler.
Syntaks
Funktionen kan bruges på følgende to måder:
ROUND(X)
ROUND(X,D)
Hvor X er værdien, der skal afrundes, og D er et valgfrit argument, der angiver antallet af decimaler, der skal afrundes til.
Eksempel
Her er et eksempel:
SELECT ROUND(7.5); Resultat:
+------------+ | ROUND(7.5) | +------------+ | 8 | +------------+
Hvis du sender en negativ værdi, får du følgende resultat:
SELECT ROUND(-7.5); Resultat:
+-------------+ | ROUND(-7.5) | +-------------+ | -8 | +-------------+
Angiv decimaler
Som standard er ROUND() funktion afrunder værdien til nul decimaler. Vi kan angive antallet af decimaler, som værdien skal afrundes til ved at sende et andet argument.
Eksempel:
SELECT ROUND(7.5164, 2); Resultat:
+------------------+ | ROUND(7.5164, 2) | +------------------+ | 7.52 | +------------------+
Negative decimaler
Det andet argument kan være en negativ værdi, hvis det kræves. Hvis du sender en negativ værdi, bliver cifre til venstre af decimalen for at blive nul.
Eksempel:
SELECT ROUND(3724.51, -2); Resultat:
+--------------------+ | ROUND(3724.51, -2) | +--------------------+ | 3700 | +--------------------+
Sammenlignet med FLOOR()
ROUND() funktionen er forskellig fra FLOOR() fungere. ROUND() funktion runder tallet op i nogle tilfælde og ned i andre. FLOOR() funktion returnerer på den anden side altid den største heltalværdi, der ikke er større end dens argument.
Her er en sammenligning for at demonstrere denne forskel:
SELECT
FLOOR(3.6789),
ROUND(3.6789); Resultat:
+---------------+---------------+ | FLOOR(3.6789) | ROUND(3.6789) | +---------------+---------------+ | 3 | 4 | +---------------+---------------+
Også FLOOR() accepterer ikke et andet argument som ROUND() gør.
ROUND() er også forskellig fra TRUNCATE() funktion, som blot afkorter tallet til en given decimal, uden nogen afrunding.
Ikke-numeriske argumenter
Her er, hvad der sker, når vi giver et ikke-numerisk argument:
SELECT ROUND('Ten'); Resultat:
+--------------+
| ROUND('Ten') |
+--------------+
| 0 |
+--------------+
1 row in set, 1 warning (0.028 sec) Lad os tjekke advarslen:
SHOW WARNINGS; Resultat:
+---------+------+-----------------------------------------+ | Level | Code | Message | +---------+------+-----------------------------------------+ | Warning | 1292 | Truncated incorrect DOUBLE value: 'Ten' | +---------+------+-----------------------------------------+
Manglende argumenter
Kalder ROUND() uden et argument resulterer i en fejl:
SELECT ROUND(); Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'ROUND'