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

Comment TRUNCATE() fonctionne dans MariaDB

Dans MariaDB, TRUNCATE() est une fonction numérique intégrée qui renvoie un nombre donné, tronqué à un nombre donné de décimales.

Syntaxe

La syntaxe ressemble à ceci :

TRUNCATE(X,D)

X est la valeur à tronquer, et D spécifie le nombre de décimales à tronquer.

Exemple

Voici un exemple :

SELECT TRUNCATE(1.25817, 2);

Résultat :

+----------------------+
| TRUNCATE(1.25817, 2) |
+----------------------+
|                 1.25 |
+----------------------+

En voici d'autres :

SELECT 
    TRUNCATE(1.25817, 1),
    TRUNCATE(1.25817, 2),
    TRUNCATE(1.25817, 3),
    TRUNCATE(1.25817, 4);

Résultat (en utilisant la sortie verticale) :

TRUNCATE(1.25817, 1): 1.2
TRUNCATE(1.25817, 2): 1.25
TRUNCATE(1.25817, 3): 1.258
TRUNCATE(1.25817, 4): 1.2581

Décimales négatives

Le deuxième argument peut être une valeur négative si nécessaire. Le passage d'une valeur négative entraîne des chiffres vers la gauche de la décimale pour devenir zéro.

Exemple :

SELECT TRUNCATE(5824.17, -2);

Résultat :

+-----------------------+
| TRUNCATE(5824.17, -2) |
+-----------------------+
|                  5800 |
+-----------------------+

Comparé à ROUND()

Le TRUNCATE() la fonction est différente de ROUND() une fonction. Le ROUND() La fonction arrondit le nombre vers le haut dans certains cas et vers le bas dans d'autres. Le TRUNCATE() fonction, d'autre part, tronque simplement le nombre sans arrondir.

Voici une comparaison pour illustrer cette différence :

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

Résultat :

+---------------------+------------------+
| TRUNCATE(3.6789, 2) | ROUND(3.6789, 2) |
+---------------------+------------------+
|                3.67 |             3.68 |
+---------------------+------------------+

C'est aussi différent du FLOOR() fonction, qui renvoie la plus grande valeur entière non supérieure à son argument. FLOOR() n'accepte pas un deuxième argument comme ROUND() et TRUNCATE() faire (il ne renvoie jamais qu'un entier de toute façon).

Arguments non numériques

Voici ce qui se passe lorsque nous fournissons un argument non numérique :

SELECT TRUNCATE('Ten', 'Two');

Résultat :

+------------------------+
| TRUNCATE('Ten', 'Two') |
+------------------------+
|                      0 |
+------------------------+
1 row in set, 3 warnings (0.000 sec)

Vérifions l'avertissement :

SHOW WARNINGS;

Résultat :

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

Nombre d'arguments non valides

Appel de TRUNCATE() avec le mauvais nombre d'arguments, ou sans argument entraîne une erreur :

SELECT TRUNCATE();

Résultat :

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1

Et :

SELECT TRUNCATE(1, 2, 3);

Résultat :

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ' 3)' at line 1