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

Come funziona ROUND() in MariaDB

In MariaDB, ROUND() è una funzione numerica incorporata che arrotonda il suo argomento a un determinato numero di cifre decimali.

Sintassi

La funzione può essere utilizzata nei seguenti due modi:

ROUND(X)
ROUND(X,D)

Dove X è il valore da arrotondare e D è un argomento facoltativo che specifica il numero di cifre decimali a cui arrotondarlo.

Esempio

Ecco un esempio:

SELECT ROUND(7.5);

Risultato:

+------------+
| ROUND(7.5) |
+------------+
|          8 |
+------------+

Il passaggio di un valore negativo produce il seguente risultato:

SELECT ROUND(-7.5);

Risultato:

+-------------+
| ROUND(-7.5) |
+-------------+
|          -8 |
+-------------+

Specifica le cifre decimali

Per impostazione predefinita, il ROUND() La funzione arrotonda il valore a zero cifre decimali. Possiamo specificare il numero di cifre decimali a cui arrotondare il valore passando un secondo argomento.

Esempio:

SELECT ROUND(7.5164, 2);

Risultato:

+------------------+
| ROUND(7.5164, 2) |
+------------------+
|             7.52 |
+------------------+

Punti decimali negativi

Il secondo argomento può essere un valore negativo, se necessario. Il passaggio di un valore negativo fa sì che le cifre si trovino a sinistra della cifra decimale per diventare zero.

Esempio:

SELECT ROUND(3724.51, -2);

Risultato:

+--------------------+
| ROUND(3724.51, -2) |
+--------------------+
|               3700 |
+--------------------+

Rispetto a FLOOR()

Il ROUND() la funzione è diversa da FLOOR() funzione. Il ROUND() la funzione arrotonda il numero per eccesso in alcuni casi e per difetto in altri. Il FLOOR() la funzione, d'altra parte, restituisce sempre il valore intero più grande non maggiore del suo argomento.

Ecco un confronto per dimostrare questa differenza:

SELECT 
    FLOOR(3.6789),
    ROUND(3.6789);

Risultato:

+---------------+---------------+
| FLOOR(3.6789) | ROUND(3.6789) |
+---------------+---------------+
|             3 |             4 |
+---------------+---------------+

Inoltre, FLOOR() non accetta un secondo argomento come ROUND() fa.

ROUND() è anche diverso da TRUNCATE() funzione, che tronca semplicemente il numero a una determinata cifra decimale, senza alcun arrotondamento.

Argomenti non numerici

Ecco cosa succede quando forniamo un argomento non numerico:

SELECT ROUND('Ten');

Risultato:

+--------------+
| ROUND('Ten') |
+--------------+
|            0 |
+--------------+
1 row in set, 1 warning (0.028 sec)

Controlliamo l'avviso:

SHOW WARNINGS;

Risultato:

+---------+------+-----------------------------------------+
| Level   | Code | Message                                 |
+---------+------+-----------------------------------------+
| Warning | 1292 | Truncated incorrect DOUBLE value: 'Ten' |
+---------+------+-----------------------------------------+

Argomenti mancanti

Chiamando ROUND() senza un argomento genera un errore:

SELECT ROUND();

Risultato:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'ROUND'