Les opérateurs mathématiques sont fournies pour de nombreux types de données pour PostgreSQL. Pour les types sans conventions mathématiques standards (par exemple les types dates/heures), nous décrivons le comportement réel dans les sections suivantes.
Tableau 9.4 affiche les opérateurs
mathématiques disponibles pour les types numériques standards. Sauf note
explicite, les opérateurs affichés comme acceptant
numeric_type
sont disponibles pour tous les
types smallint
, integer
, bigint
,
numeric
, real
et double precision
.
Les opérateurs affichés comme acceptant
integral_type
sont disponibles pour les types
smallint
, integer
et bigint
. Sauf
note explicite, chaque forme d'un opérateur renvoie le même type de
données que ses arguments, Les appels impliquant plusieurs types de
données en argument, tel que integer
+
numeric
, sont résolus en utilisant le type apparaissant en
dernier dans ces listes.
Tableau 9.4. Opérateurs mathématiques
Opérateur Description Exemple(s) |
---|
Addition
|
Plus unitaire (pas d'opération)
|
Soustraction
|
Négation
|
Multiplication
|
Division (pour les types entiers, la division tronque le résultat vers zéro)
|
Modulo (reste) ; disponible pour
|
Exponentiel
Contrairement aux pratiques mathématiques typiques, plusieurs
utilisations de
|
Racine carrée
|
Racine cubique
|
Valeur absolue
|
AND bit à bit
|
OR bit à bit
|
OR exclusif bit à bit
|
NOT bit à bit
|
Décalage à gauche bit à bit
|
Décalage à droite bit à bit
|
Tableau 9.5 affiche les fonctions
mathématiques disponibles. Beaucoup de ces fonctions sont fournies dans des
formes différentes avec des types d'argument différents. Sauf note
explicite, toute forme donnée d'une fonction renvoie le même type de donnée
que ses arguments ; les cas inter-type sont résolus de la même façon
qu'expliqué ci-dessus pour les opérateurs. Les fonctions travaillant avec
des données de type double precision
sont implémentées
majoritairement grâce à la bibliothèque C du système hôte ; la
précision et le comportement dans les cas limites peuvent donc varier
suivant le système hôte.
Tableau 9.5. Fonctions mathématiques
Tableau 9.6 affiche les fonctions pour générer des nombres aléatoires.
Tableau 9.6. Fonctions aléatoires
La fonction random()
utilise un générateur de nombres
pseudo aléatoires déterministique. Il est rapide mais non convenable pour
des applications cryptographiques. Voir le module pgcrypto
pour une alternative plus sécurisée. Si setseed()
est
appelé, la série de résultats d'appels en bouicle à
random()
dans la même session peut être répétée en
ré-exécutant setseed()
avec le même argument.
Sans un appel précédent à setseed()
dans la même session,
le premier appel à random()
obtient une graine d'une
source dépendante de la plateforme de bits aléatoires.
Ces remarques valent aussi bien pour random_normal()
.
Tableau 9.7 montre les fonctions trigonométriques disponibles. Chacune de ces fonctions vient en deux variantes, une pour mesurer les angles en radians et une pour les mesurer en degrés.
Tableau 9.7. Fonctions trigonométriques
Une autre façon de travailler avec des angles mesurés en degrés est
d'utiliser les fonctions de transformation d'unité
et
radians()
montrées plus tôt.
Néanmoins, utiliser les fonctions trigonométriques basées sur les degrés
est préféré, car cette façon évite les erreurs d'arrondi pour les cas
spéciaux comme degrees()
sind(30)
.
Tableau 9.8 affiche les fonctions hyperboliques.
Tableau 9.8. Fonctions hyperboliques