I MariaDB, ROUND()
är en inbyggd numerisk funktion som avrundar sitt argument till ett givet antal decimaler.
Syntax
Funktionen kan användas på följande två sätt:
ROUND(X)
ROUND(X,D)
Där X
är värdet som ska avrundas och D
är ett valfritt argument som anger antalet decimaler som ska avrundas till.
Exempel
Här är ett exempel:
SELECT ROUND(7.5);
Resultat:
+------------+ | ROUND(7.5) | +------------+ | 8 | +------------+
Att skicka ett negativt värde ger följande resultat:
SELECT ROUND(-7.5);
Resultat:
+-------------+ | ROUND(-7.5) | +-------------+ | -8 | +-------------+
Ange decimaler
Som standard är ROUND()
funktion avrundar värdet till noll decimaler. Vi kan specificera antalet decimaler att avrunda värdet till genom att skicka ett andra argument.
Exempel:
SELECT ROUND(7.5164, 2);
Resultat:
+------------------+ | ROUND(7.5164, 2) | +------------------+ | 7.52 | +------------------+
Negativa decimaler
Det andra argumentet kan vara ett negativt värde om det behövs. Att skicka ett negativt värde gör att siffror till vänster av decimalen för att bli noll.
Exempel:
SELECT ROUND(3724.51, -2);
Resultat:
+--------------------+ | ROUND(3724.51, -2) | +--------------------+ | 3700 | +--------------------+
Jämfört med FLOOR()
ROUND()
funktionen skiljer sig från FLOOR()
fungera. ROUND()
funktion avrundar talet uppåt i vissa fall och nedåt i andra. FLOOR()
funktion, å andra sidan, returnerar alltid det största heltalsvärdet som inte är större än dess argument.
Här är en jämförelse för att visa denna skillnad:
SELECT
FLOOR(3.6789),
ROUND(3.6789);
Resultat:
+---------------+---------------+ | FLOOR(3.6789) | ROUND(3.6789) | +---------------+---------------+ | 3 | 4 | +---------------+---------------+
Även FLOOR()
accepterar inte ett andra argument som ROUND()
gör.
ROUND()
skiljer sig också från TRUNCATE()
funktion, som helt enkelt trunkerar talet till en given decimal, utan någon avrundning.
Icke-numeriska argument
Det här är vad som händer när vi tillhandahåller ett icke-numeriskt argument:
SELECT ROUND('Ten');
Resultat:
+--------------+ | ROUND('Ten') | +--------------+ | 0 | +--------------+ 1 row in set, 1 warning (0.028 sec)
Låt oss kolla varningen:
SHOW WARNINGS;
Resultat:
+---------+------+-----------------------------------------+ | Level | Code | Message | +---------+------+-----------------------------------------+ | Warning | 1292 | Truncated incorrect DOUBLE value: 'Ten' | +---------+------+-----------------------------------------+
Argument saknas
Anropar ROUND()
utan argument resulterar i ett fel:
SELECT ROUND();
Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'ROUND'