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 convention mathématique commune à toutes les permutations
possibles (les types dates/time, par exemple), le comportement réel
est décrit dans les sections appropriées.
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 à bit
|
91 & 15
|
11
|
|
|
|
OR bit à bit
|
32 | 3
|
35
|
|
#
|
XOR bit à bit
|
17 # 5
|
20
|
|
~
|
NOT bit à bit
|
~1
|
-2
|
|
<<
|
décalage gauche
|
1 << 4
|
16
|
|
>>
|
décalage droit
|
8 >> 2
|
2
|
Les opérateurs bits à bits ne fonctionnent que sur les types de
données entiers 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 ce tableau, dp signifie double
precision. Beaucoup de ces fonctions sont fournies dans de
nombreuses formes avec différents types d'argument. 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
implantées avec la bibliothèque C du système hôte ; la précision et
le comportement dans les cas particuliers peuvent varier en fonction
du 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 de
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
)
|
(identique au type 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() à suivre (valeur entre 0 et 1.0)
|
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
est affecté dans un
histogramme d'équidistance à
nombre
jetons, les valeurs allant
de
b1
à
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
|