PostgreSQL为很多类型提供了数学操作符。对于那些没有标准数学表达的类型(如日期/时间类型),我们将在后续小节中描述实际的行为。
    表 9.4 显示了可用于标准数字类型的数学操作符。.
    除非另有说明, 显示为可接受 numeric_type 的操作符对所有的 smallint、integer、bigint、numeric、real 和 double precision类型都可用。
    显示为可接受 integral_type 的操作符对 smallint、integer 和 bigint类型是可用的。
    除了特别说明之处,操作符的每种形式都返回与其参数相同的数据类型。
    涉及多个参数数据类型的调用, 例如 integer + numeric,可通过使用这些列表中稍后出现的类型来解析。
   
表 9.4. 数学操作符
| 操作符 描述 例子 | 
|---|
| 
         加 
         | 
| 
         一元加(无操作) 
         | 
| 
         减 
         | 
| 
         否定 
         | 
| 
         乘 
         | 
| 
         除(对于整型,除法将结果截断为零) 
         
         
         | 
| 
         
        模(取余); 适用于  
         | 
| 
         
         
        指数 (不像典型的数学实践, 多次使用  
         
         | 
| 
         平方根 
         | 
| 
         立方根 
         | 
| 
         
        阶乘(已弃用, 使用  
         | 
| 
         
        阶乘作为前缀操作符(已弃用, 使用  
         | 
| 
         绝对值 
         | 
| 
         按位与(AND) 
         | 
| 
         按位或(OR) 
         | 
| 
         按位异或(exclusive OR) 
         | 
| 
         按位求反(NOT) 
         | 
| 
         按位左移 
         | 
| 
         按位右移 
         | 
   表 9.5 显示了可用的数学函数。
   许多这样的函数以多种具有不同的参数类型的形式提供。
   除非注明,任何给定形式的函数都返回与其参数相同的数据类型;跨类型情况的解决方法与上述对操作符的解释相同。
   使用double precision数据的函数大多是在主机系统的C库上实现的;
   因此,边界情况下的准确性和行为会因主机系统的区别而不同。
  
表 9.5. 数学函数
表 9.6展示了用于产生随机数的函数。
表 9.6. 随机函数
   random()函数使用了一个简单的线性共轭算法。 
   它的速度很快,但不适合于密码学应用;关于更安全的替代方案,请参阅 pgcrypto模块。 
   如果setseed()被调用,那么当前会话中的一系列后续random()调用的结果能够通过使用相同的参数重新发布setseed()来重复。
   
表 9.7显示了可用的三角函数。 每一种这样的函数都有两个变体,一个以弧度度量角,另一个以角度度量角。
表 9.7. 三角函数
    另一种使用以角度度量的角的方法是使用早前展示的单位转换函数radians()degrees()sind(30)等特殊情况下的舍入偏差。
   
表 9.8显示的是可用的双曲函数。
表 9.8. 双曲函数