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)
Où 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