9.3. Fonctions et opérateurs mathématiques

Des opérateurs mathématiques sont fournis pour beaucoup 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.

Tableau 9-2 affiche les opérateurs mathématiques disponibles.

Tableau 9-2. Opérateurs mathématiques

OpérateurDescriptionExempleRésultat
+ addition2 + 35
- soustraction2 - 3-1
* multiplication2 * 36
/ division (la division entière tronque les résultats)4 / 22
% modulo (reste)5 % 41
^ exponentiel2.0 ^ 3.08
|/ racine carrée|/ 25.05
||/ racine cubique||/ 27.03
! factoriel5 !120
!! factoriel (opérateur préfixe)!! 5120
@ valeur absolue@ -5.05
& AND bit par bit91 & 1511
| OR bit par bit32 | 335
# XOR bit par bit17 # 520
~ NOT bit par bit~1-2
<< décalage gauche1 << 416
>> décalage droit8 >> 22

Les opérateurs bit à bit sont aussi disponibles pour les types de chaînes de bit bit et bit varying, comme l'indique Tableau 9-3. Les opérandes de chaînes de bits &, | et # doivent être de même longueur. Lors d'un décalage de bits, la longueur original de la chaîne est conservée, comme indiquée dans la table.

Tableau 9-3. Opérateurs bit à bit pour les chaînes de bit

ExempleRésultat
B'10001' & B'01101'00001
B'10001' | B'01101'11101
B'10001' # B'01101'11100
~ B'10001'01110
B'10001' << 301000
B'10001' >> 200100

Tableau 9-4 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-4. Fonctions mathématiques

FonctionType renvoyéDescriptionExempleRésultat
abs(x)(identique à x)valeur absolueabs(-17.4)17.4
cbrt(dp)dpracine cubiquecbrt(27.0)3
ceil(dp ou numeric)(identique à l'argument)plus petit entier supérieur à l'argumentceil(-42.8)-42
degrees(dp)dpradians vers degrésdegrees(0.5)28.6478897565412
exp(dp ou numeric)(identique à l'argument)exponentielexp(1.0)2.71828182845905
floor(dp ou numeric)(identique à l'argument)plus grand entier inférieur à l'argumentfloor(-42.8)-43
ln(dp ou numeric)(identique à l'argument)logarithmeln(2.0)0.693147180559945
log(dp ou numeric)(identique à l'argument)logarithme base 10log(100.0)2
log(b numeric, x numeric)numericlogarithme en base blog(2.0, 64.0)6.0000000000
mod(y, x)(identiques aux types des arguments)reste de y/xmod(9,4)1
pi()dpconstante << π >>pi()3.14159265358979
pow(a dp, b dp)dpa élevé à la puissance bpow(9.0, 3.0)729
pow(a numeric, b numeric)numerica élevé à la puissance bpow(9.0, 3.0)729
radians(dp)dpdegrés vers radiansradians(45.0)0.785398163397448
random()dpvaleur au hasard entre 0.0 et 1.0random() 
round(dp ou numeric)(identique à l'argument)arrondi à l'entier le plus procheround(42.4)42
round(v numeric, s integer)numericarrondi pour s décimalesround(42.4382, 2)42.44
setseed(dp)int32initialise 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érotrunc(42.8)42
trunc(v numeric, s integer)numerictronque sur s décimalestrunc(42.4382, 2)42.43

Enfin, Tableau 9-5 affiche les fonctions trigonométriques disponibles. Toutes les fonctions trigonométriques prennent des arguments et renvoient des valeurs de type double precision.

Tableau 9-5. Fonctions trigonométriques

FonctionDescription
acos(x)cosinus inversé
asin(x)sinus inverse
atan(x)tangente inverse
atan2(x, y)tangent inverse de x/ y
cos(x)cosinus
cot(x)cotangente
sin(x)sinus
tan(x)tangente