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

MariaDB FLOOR() vs TRUNCATE()

MariaDB ha un FLOOR() funzione e un TRUNCATE() funzione che può restituire gli stessi risultati o risultati diversi, a seconda del valore esatto dei loro argomenti.

Di seguito è riportato un rapido riassunto della differenza tra FLOOR() e TRUNCATE() in MariaDB.

La differenza

Ecco la differenza tra ciascuna funzione in poche parole:

  • FLOOR() restituisce il valore intero più grande non maggiore del suo argomento.
  • TRUNCATE() tronca il suo argomento a un numero specificato di cifre decimali.

Sintassi

Innanzitutto, ecco le sintassi di ciascuna funzione.

FLOOR()

La sintassi per FLOOR() va così:

FLOOR(X)

Restituisce il valore intero più grande non maggiore di X .

TRUNCATE()

La sintassi per TRUNCATE() va così:

TRUNCATE(X,D)

TRUNCATE() restituisce il numero X , troncato in D cifre decimali.

Esempio

Ecco un confronto per dimostrare la differenza tra FLOOR() e TRUNCATE() :

SELECT 
    FLOOR(-3.6789),
    TRUNCATE(-3.6789, 0);

Risultato:

+----------------+----------------------+
| FLOOR(-3.6789) | TRUNCATE(-3.6789, 0) |
+----------------+----------------------+
|             -4 |                   -3 |
+----------------+----------------------+

In questo caso, il numero è un valore negativo e il risultato di ciascuna funzione è diverso.

  • FLOOR() ha restituito il numero intero più grande (-4 ) valore non maggiore del suo argomento.
  • Il TRUNCATE() funzione d'altra parte, ha semplicemente troncato il numero alla cifra decimale specificata.

Stesso risultato

Entrambe le funzioni possono talvolta restituire lo stesso risultato. Tutto dipende dal valore degli argomenti passati.

Se cambiamo i numeri in valori positivi, entrambe le funzioni restituiscono lo stesso risultato:

SELECT 
    FLOOR(3.6789),
    TRUNCATE(3.6789, 0);

Risultato:

+---------------+---------------------+
| FLOOR(3.6789) | TRUNCATE(3.6789, 0) |
+---------------+---------------------+
|             3 |                   3 |
+---------------+---------------------+

Il secondo argomento

Un'altra ovvia differenza tra le due funzioni è che TRUNCATE() accetta/richiede un secondo argomento. Ciò può comportare un risultato che contiene una parte frazionaria.

FLOOR() tuttavia, restituisce solo un numero intero, quindi non viene mai restituita alcuna parte frazionaria.

Esempio

SELECT 
    FLOOR(3.6789),
    TRUNCATE(3.6789, 2);

Risultato:

+---------------+---------------------+
| FLOOR(3.6789) | TRUNCATE(3.6789, 2) |
+---------------+---------------------+
|             3 |                3.67 |
+---------------+---------------------+

Il ROUND() Funzione

Entrambe le funzioni sono diverse da ROUND() funzione, che arrotonda il suo argomento a un numero specificato di cifre decimali.