sql >> Database teknologi >  >> RDS >> MariaDB

Sådan fungerer ROUND() i MariaDB

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'

  1. SQLiteReadOnlyDatabaseException:forsøg på at skrive en skrivebeskyttet database (kode 1032)

  2. Sådan bruger du MySQL Rollup

  3. Android studio getSlotFromBufferLocked:ukendt bufferfejl

  4. Millisekunder i min DateTime ændres, når den er gemt i SQL Server