ABS |
Valeur absolue |
|---|---|
| Oracle Database SQL | Oracle 6 ou supérieure |
Syntaxe
| Abs(Nombre) |
Paramètres
| Nom | Description |
|---|---|
| Nombre | Ce paramètre permet d'indiquer l'expression contenant le nombre à traiter |
Retour
| Valeur | Description |
|---|---|
| 0 ou supérieure | Ces valeurs sont les seules pouvant être retourné. La valeur absolue d'un nombre est toujours positive. |
Description
Cette fonction retourne la valeur absolue d'un nombre. Ainsi, le signe (négatif), s'il existe, est retiré de façon à conserver uniquement les chiffres du nombre sans toutefois changer sa valeur. Voici un graphique de représentation de la distribution de cette valeur :
Algorithme
|
MODULE ABS(valeur) SI valeur < 0 ALORS RETOURNE - valeur SINON RETOURNE valeur FIN SI |
Remarques
- Retourne la distance du nombre à zéro, sans tenir compte du signe : La fonction ABS(nombre) calcule la valeur absolue d'un nombre, c'est-à-dire sa distance par rapport à zéro sur la ligne des réels. Par exemple, ABS(-10) et ABS(10) retournent tous deux 10, ce qui peut être utile pour neutraliser les signes négatifs.
- Fonction mathématique élémentaire, très rapide à exécuter : ABS fait partie des fonctions arithmétiques de base intégrées au moteur SQL. Elle est hautement optimisée et s'exécute rapidement même sur de grandes quantités de données, ce qui en fait un bon choix dans les requêtes intensives.
- Applicable à tous les types numériques pris en charge par Oracle : La fonction accepte tous les types numériques valides, comme NUMBER, INTEGER, FLOAT, ou DECIMAL. Elle est donc polyvalente et ne nécessite pas de conversion préalable dans la plupart des cas.
- Utile pour des comparaisons indépendantes du signe : ABS est souvent utilisée lorsqu'on souhaite comparer la magnitude d'un écart ou d'une différence, peu importe la direction. Par exemple, WHERE ABS(salaire1 - salaire2) < 500 détecte des salaires proches, qu'ils soient au-dessus ou en dessous.
- Fonction déterministe, sans dépendance à l'environnement ou à l'état : ABS est pure et déterministe : elle renvoie toujours le même résultat pour une même entrée. Elle ne dépend ni du système, ni de l'utilisateur, ni du contexte, ce qui permet de l'utiliser sans risque dans des vues matérialisées ou des index fonctionnels.
- Résultat toujours positif ou nul : Par définition, la valeur absolue d'un nombre est toujours ≥ 0. ABS(0) retourne 0, et tous les autres nombres (positifs ou négatifs) donnent un résultat strictement positif. Cela permet de filtrer ou de classer des valeurs sans biais directionnel.
- Peut masquer une information importante : le sens du changement : Utiliser ABS peut supprimer des indications précieuses, comme le fait qu'un solde est négatif, ou qu'un écart est en faveur d'un cas plutôt qu'un autre. Il faut donc l'utiliser avec discernement, selon le besoin exact de neutralisation du signe.
- Complément utile à d'autres fonctions de manipulation de données numériques : ABS est souvent associée à des fonctions comme ROUND, CEIL, FLOOR, SIGN, ou encore des opérateurs conditionnels (CASE). Cela permet d'encadrer des seuils, de gérer des écarts, ou de formater des rapports de comparaison sans ambiguïté.
Exemples
Voici un exemple montrant une utilisation de la valeur absolue avec des parenthèses :
- SELECT abs(9*(-7)) FROM DUAL;
on obtiendra le résultat suivant :
| abs(9*(-7)) |
| 63 |
Voici un exemple montrant une utilisation de la valeur absolue avec des parenthèses :
- BEGIN
- DBMS_OUTPUT.PUT_LINE(abs(9*(-7)));
- END;
on obtiendra le résultat suivant :
63Voici un exemple montrant une utilisation plus classique de la valeur absolue :
on obtiendra le résultat suivant :
11
30.2
35.4
Voir également
Langage de programmation - Oracle - Référence de fonctions - FLOOR
Article - Les géants de l'informatique - Oracle
Dernière mise à jour : Lundi, le 11 mai 2015