sql >> Databasteknik >  >> RDS >> MariaDB

Hur ROUND() fungerar i MariaDB

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'

  1. Hur Time()-funktionen fungerar i SQLite

  2. Sök med kommaseparerat värde mysql

  3. Live-migreringar med MySQL-replikering

  4. Isoleringsnivån Läs oengagerad