MariaDB
 sql >> Base de données >  >> RDS >> MariaDB

MariaDB FLOOR() vs TRUNCATE()

MariaDB a un FLOOR() fonction et un TRUNCATE() fonction qui peut retourner les mêmes résultats ou des résultats différents, selon la valeur exacte de leurs arguments.

Vous trouverez ci-dessous un bref aperçu de la différence entre FLOOR() et TRUNCATE() dans MariaDB.

La différence

Voici la différence entre chaque fonction en quelques mots :

  • FLOOR() renvoie la plus grande valeur entière non supérieure à son argument.
  • TRUNCATE() tronque son argument à un nombre spécifié de décimales.

Syntaxe

Voici d'abord les syntaxes de chaque fonction.

FLOOR()

La syntaxe de FLOOR() va comme ceci :

FLOOR(X)

Il renvoie la plus grande valeur entière non supérieure à X .

TRUNCATE()

La syntaxe de TRUNCATE() va comme ceci :

TRUNCATE(X,D)

TRUNCATE() renvoie le nombre X , tronqué en D décimales.

Exemple

Voici une comparaison pour démontrer la différence entre FLOOR() et TRUNCATE() :

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

Résultat :

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

Dans ce cas, le nombre est une valeur négative et le résultat de chaque fonction est différent.

  • FLOOR() a renvoyé le plus grand entier (-4 ) valeur non supérieure à son argument.
  • Le TRUNCATE() d'autre part, a simplement tronqué le nombre à la décimale spécifiée.

Même résultat

Les deux fonctions peuvent parfois renvoyer le même résultat. Tout dépend de la valeur des arguments passés.

Si nous changeons les nombres en valeurs positives, les deux fonctions renvoient le même résultat :

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

Résultat :

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

Le deuxième argument

Une autre différence évidente entre les deux fonctions est que TRUNCATE() accepte/nécessite un deuxième argument. Cela peut entraîner un résultat qui contient une partie fractionnaire.

FLOOR() cependant, ne renvoie qu'un entier, donc aucune partie fractionnaire n'est jamais renvoyée.

Exemple

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

Résultat :

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

Le ROUND() Fonction

Les deux fonctions sont différentes de ROUND() fonction, qui arrondit son argument à un nombre spécifié de décimales.