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