- Catégories :
Fonctions numériques (arrondi et troncation)
TRUNCATE , TRUNC¶
Arrondit l’expression d’entrée au nombre entier le plus proche (ou égal) le plus proche de zéro, ou à la valeur égale ou inférieure la plus proche avec le nombre spécifié de positions après le point décimal.
Ces fonctions sont synonymes.
Note
TRUNC est surchargé ; il peut également être utilisé comme fonction de date / heure pour tronquer les dates, heures et horodatages sur une partie spécifiée.
Syntaxe¶
TRUNCATE( <input_expr> [ , <scale_expr> ] )
TRUNC( <input_expr> [ , <scale_expr> ] )
Arguments¶
input_expr
Valeur ou expression sur laquelle opérer. Le type de données doit être l’un des types de données numériques, tels que FLOAT ou NUMBER.
scale_expr
Nombre de chiffres que la sortie doit inclure après le point décimal. L’expression doit correspondre à un entier compris entre -38 et +38.
La valeur
scale_expr
par défaut est zéro, ce qui signifie que la fonction supprime tous les chiffres après le point décimal.Pour plus d’informations sur les échelles négatives, voir les Notes d’utilisation ci-dessous.
Renvoie¶
Le type de données de la valeur renvoyée est NUMBER (précision, échelle).
Si l’échelle d’entrée était supérieure ou égale à zéro, l’échelle de sortie correspond généralement à l’échelle d’entrée.
Si l’échelle d’entrée était négative, l’échelle de sortie est 0.
- Par exemple :
Le type de données renvoyé par TRUNCATE(3.14, 1) est NUMBER(4, 1).
Le type de données renvoyé par TRUNCATE(3.14, 0) est NUMBER(4, 0).
Le type de données renvoyé par TRUNCATE(33.33, -1) est NUMBER(5, 0).
Si l’échelle est égale à zéro, la valeur est effectivement un entier.
Notes sur l’utilisation¶
Si
scale_expr
est négatif, alors il spécifie le nombre de positions avant le point décimal auquel le nombre doit être ajusté. Par exemple, si l’échelle est -2, le résultat est un multiple de 100.Si
scale_expr
est plus grand que l’échelle d’expression en entrée, la fonction n’a aucun effet.Si
input_expr
ouscale_expr
est NULL, le résultat est NULL.La troncature est effectuée vers 0, pas vers le plus petit nombre. Par exemple, TRUNCATE(-9,6) donne -9, et non -10.
Exemples¶
L’exemple suivant illustre la fonction TRUNC
.
SELECT DISTINCT n, TRUNCATE(n) FROM test_1 ORDER BY n; +----------+-------------+ | N | TRUNCATE(N) | |----------+-------------| | -975.975 | -975 | | 135.135 | 135 | +----------+-------------+SELECT n, scale, TRUNC(n, scale) FROM test_1 ORDER BY n, scale; +----------+-------+-----------------+ | N | SCALE | TRUNC(N, SCALE) | |----------+-------+-----------------| | -975.975 | -1 | -970 | | -975.975 | 0 | -975 | | -975.975 | 2 | -975.97 | | 135.135 | -2 | 100 | | 135.135 | 0 | 135 | | 135.135 | 1 | 135.1 | | 135.135 | 3 | 135.135 | | 135.135 | 50 | 135.135 | | 135.135 | NULL | NULL | +----------+-------+-----------------+