PostgreSQLLa base de données la plus sophistiquée au monde.

9.3. Fonctions et opérateurs mathématiques

Des opérateurs mathématiques sont fournis pour un grand nombre de types PostgreSQL™. Pour les types sans conventions mathématiques communes pour toutes les permutations possibles (c'est-à-dire les types dates/time), nous décrivons le comportement actuel dans les sections ci-dessous.

Le Tableau 9.2, « Opérateurs mathématiques » affiche les opérateurs mathématiques disponibles.

Tableau 9.2. Opérateurs mathématiques

Opérateur Description Exemple Résultat
+ addition 2 + 3 5
- soustraction 2 - 3 -1
* multiplication 2 * 3 6
/ division (la division entière tronque les résultats) 4 / 2 2
% modulo (reste) 5 % 4 1
^ exponentiel 2.0 ^ 3.0 8
|/ racine carrée |/ 25.0 5
||/ racine cubique ||/ 27.0 3
! factoriel 5 ! 120
!! factoriel (opérateur préfixe) !! 5 120
@ valeur absolue @ -5.0 5
& AND bit par bit 91 & 15 11
| OR bit par bit 32 | 3 35
# XOR bit par bit 17 # 5 20
~ NOT bit par bit ~1 -2
<< décalage gauche 1 << 4 16
>> décalage droit 8 >> 2 2

Les opérateurs bits à bits fonctionnent seulement sur les types de données intégrals alors que les autres sont disponibles pour tous les types de données numériques. Les opérateurs bit par bit sont aussi disponibles pour les types de chaînes de bits bit et bit varying comme le montre le Tableau 9.10, « Opérateurs sur les chaînes de bits ».

Le Tableau 9.3, « Fonctions mathématiques » affiche les fonctions mathématiques disponibles. Dans la table, dp signifie double precision. Beaucoup de ces fonctions sont fournies dans de nombreuses formes composées de types d'argument différents. Sauf lorsque c'est indiqué, toute forme donnée d'une fonction renvoie le même type de données que son argument. Les fonctions utilisant des données de type double precision sont pour la plupart implémentées avec la bibliothèque C du système hôte ; la précision et le comportement dans les cas particuliers peuvent varier suivant le système hôte.

Tableau 9.3. Fonctions mathématiques

Fonction Type renvoyé Description Exemple Résultat
abs(x) (identique à x) valeur absolue abs(-17.4) 17.4
cbrt(dp) dp racine cubique cbrt(27.0) 3
ceil(dp ou numeric) (identique à l'argument) plus petit entier supérieur à l'argument ceil(-42.8) -42
ceiling(dp ou numeric) (identique à l'argument) plus petit entier supérieur à l'argument (alias pour ceil) ceiling(-95.3) -95
degrees(dp) dp radians vers degrés degrees(0.5) 28.6478897565412
exp(dp ou numeric) (identique à l'argument) exponentiel exp(1.0) 2.71828182845905
floor(dp ou numeric) (identique à l'argument) plus grand entier inférieur à l'argument floor(-42.8) -43
ln(dp ou numeric) (identique à l'argument) logarithme ln(2.0) 0.693147180559945
log(dp ou numeric) (identique à l'argument) logarithme base 10 log(100.0) 2
log(b numeric, x numeric) numeric logarithme en base b log(2.0, 64.0) 6.0000000000
mod(y, x) (identiques aux types des arguments) reste de y/x mod(9,4) 1
pi() dp constante « pi » pi() 3.14159265358979
power(a dp, b dp) dp a élevé à la puissance b power(9.0, 3.0) 729
power(a numeric, b numeric) numeric a élevé à la puissance b power(9.0, 3.0) 729
radians(dp) dp degrés vers radians radians(45.0) 0.785398163397448
random() dp valeur au hasard entre 0.0 et 1.0 random()  
round(dp ou numeric) (identique à l'argument) arrondi à l'entier le plus proche round(42.4) 42
round(v numeric, s int) numeric arrondi pour s décimales round(42.4382, 2) 42.44
setseed(dp) int initialise la recherche pour les appels à random() setseed(0.54823) 1177314959
sign(dp ou numeric) (identique à l'argument) signe de l'argument (-1, 0, +1) sign(-8.4) -1
sqrt(dp ou numeric) (identique à l'argument) racine carré sqrt(2.0) 1.4142135623731
trunc(dp ou numeric) (identique à l'argument) tronque vers zéro trunc(42.8) 42
trunc(v numeric, s int) numeric tronque sur s décimales trunc(42.4382, 2) 42.43
width_bucket(op numeric, b1 numeric, b2 numeric, count int) int renvoie le jeton auquel l'opérande était affecté dans un histogramme à équidistance du nombre de jetons, une limite supérieure de b1 et une limite inférieure de b2 width_bucket(5.35, 0.024, 10.06, 5) 3

Enfin, le Tableau 9.4, « Fonctions trigonométriques » affiche les fonctions trigonométriques disponibles. Toutes les fonctions trigonométriques prennent des arguments et renvoient des valeurs de type double precision.

Tableau 9.4. Fonctions trigonométriques

Fonction Description
acos(x) cosinus inverse
asin(x) sinus inverse
atan(x) tangente inverse
atan2(x, y) tangente inverse de x/ y
cos(x) cosinus
cot(x) cotangente
sin(x) sinus
tan(x) tangente