TRUNC |
Tronquer |
|---|---|
| Oracle Database SQL | Oracle Version 6 ou supérieure |
Syntaxe
| trunc(Nombre[,NombreDec]) |
Paramètres
| Nom | Description |
|---|---|
| Nombre | Ce paramètre permet d'indiquer le nombre à tronquer. |
| NombreDec | Ce paramètre permet d'indiquer le nombre de décimal au maximum à retourner. |
Description
Cette fonction permet de réduire la précision décimale d'un nombre.
Remarques
- La fonction TRUNC permet de tronquer un nombre en supprimant ses décimales au-delà d'un certain nombre de chiffres spécifiés, sans effectuer d'arrondi. Cela est utile lorsque l'on souhaite contrôler la précision numérique sans modifier la valeur par un arrondi.
- Le paramètre Nombre correspond à l'expression numérique que l'on souhaite tronquer. Cette expression peut être une constante, une colonne de table, ou une expression arithmétique calculée dans la requête.
- Le paramètre optionnel NombreDec définit la précision décimale voulue après le tronquage. Par défaut, si ce paramètre est omis, la fonction tronque la partie décimale, retournant la partie entière du nombre.
- Si NombreDec est défini à 0, le résultat correspond à la partie entière du nombre, sans décimales. C'est l'usage le plus courant pour obtenir une valeur entière à partir d'un nombre à virgule.
- Lorsque NombreDec est négatif, la fonction tronque la partie entière à gauche de la virgule, c'est-à-dire qu'elle peut tronquer des chiffres avant la virgule, comme les dizaines ou centaines. Par exemple, TRUNC(123.456, -1) retourne 120.
- La fonction TRUNC ne modifie pas la valeur d'origine dans la base, elle retourne simplement une valeur calculée dans le contexte de la requête. Elle est donc purement fonctionnelle et ne modifie pas les données entreposées.
- Contrairement à la fonction ROUND, TRUNC ne réalise pas d'arrondi mais une simple coupe de la partie décimale ou entière selon la précision demandée. Cela garantit un contrôle strict sur la valeur.
- Cette fonction est particulièrement utile dans les calculs financiers ou scientifiques où la précision doit être limitée sans altérer la valeur par arrondi.
- Sur les dates, bien que ce ne soit pas le sujet ici, la fonction TRUNC peut aussi tronquer une date à un jour, mois, année,..., mais la syntaxe et le comportement sont différents pour les types DATE.
- En termes de performance, TRUNC est très rapide et ne requiert que peu de ressources car c'est une simple opération mathématique sur un nombre.
- Utiliser TRUNC dans les clauses WHERE permet d'effectuer des comparaisons sur des valeurs numériques en limitant la précision, ce qui peut être utile pour regrouper ou filtrer des données à un certain niveau de granularité.
- Enfin, la fonction est compatible avec toutes les versions Oracle depuis la version 6, ce qui la rend largement portable et fiable dans les développements utilisant ce SGBD.
Exemple
Voici quelques exemples typiques de l'utilisation de cette fonction :
- SELECT 'Trunc(1,0)=' As Text,Trunc(1,0) As Result FROM DUAL UNION
- SELECT 'Trunc(1.1,0)=' As Text, Trunc(1.1,0) As Result FROM DUAL UNION
- SELECT 'Trunc(1.7,0)=' As Text, Trunc(1.7,0) As Result FROM DUAL UNION
- SELECT 'Trunc(-1,0)=' As Text, Trunc(-1,0) As Result FROM DUAL UNION
- SELECT 'Trunc(-1.1,0)=' As Text, Trunc(-1.1,0) As Result FROM DUAL UNION
- SELECT 'Trunc(-1.7,0)=' As Text, Trunc(-1.7,0) As Result FROM DUAL UNION
- SELECT 'Trunc(30.2,0)=' As Text, Trunc(30.2,0) As Result FROM DUAL UNION
- SELECT 'Trunc(-35.4,0)=' As Text, Trunc(-35.4,0) As Result FROM DUAL UNION
- SELECT 'Trunc(-345.6789,2)=' As Text, Trunc(-345.6789,2) As Result FROM DUAL
on obtiendra le résultat suivant :
| TEXT | RESULT |
| Trunc(-1,0)= | -1 |
| Trunc(-1.1,0)= | -1 |
| Trunc(-1.7,0)= | -1 |
| Trunc(-345.6789,2)= | -345,67 |
| Trunc(-35.4,0)= | -35 |
| Trunc(1,0)= | 1 |
| Trunc(1.1,0)= | 1 |
| Trunc(1.7,0)= | 1 |
| Trunc(30.2,0)= | 30 |
Voir également
Article - Les géants de l'informatique - Oracle
Dernière mise à jour : Lundi, le 11 mai 2015