您的位置:寻梦网首页编程乐园数据库PostgreSQL 7.2 Documentation

4.3. 数学函数和操作符

PostgreSQL 为许多类型提供了数学操作符. 对于那些在所有可能的组合中都没有一般的数学传统的类型 (比如,日期/时间类型),我们在随后的章节里描述实际的行为.

Table 4-2. 数学操作符

名字 描述 例子 结果
+ 2 + 3 5
- 2 - 3 -1
* 2 * 3 6
/ 除 (整数除法将截断结果) 4 / 2 2
% 模除 (求余) 5 % 4 1
^ 幂(指数运算) 2.0 ^ 3.0 8
|/ 平方根 |/ 25.0 5
||/ 立方根 ||/ 27.0 3
! 阶乘 5 ! 120
!! 阶乘 (左操作符) !! 5 120
@ 绝对值 @ -5.0 5
& 二进制 AND 91 & 15 11
| 二进制 OR 32 | 3 35
# 二进制 XOR 17 # 5 20
~ 二进制 NOT ~1 -2
<< 二进制左移 1 << 4 16
>> 二进制右移 8 >> 2 2

"二进制" 操作符还可以用于位串类型 BIT BIT VARYING

Table 4-3. 位串二进制操作符

例子 结果
B'10001' & B'01101' 00001
B'10001' | B'01101' 11101
B'10001' # B'01101' 11110
~ B'10001' 01110
B'10001' << 3 01000
B'10001' >> 2 00100
& , | , 和 # 的位串参数必须等长.在进行位移动时, 该串原先的长度被保留,如上所述.

Table 4-4. 数学函数

函数 返回类型 描述 例子 结果
abs ( x ) (和x类型相同) 绝对值 abs(-17.4) 17.4
cbrt ( dp ) dp 立方根 cbrt(27.0) 3
ceil ( numeric ) numeric 不小于参数的最小的整数 ceil(-42.8) -42
degrees ( dp ) dp 把弧度转为角度 degrees(0.5) 28.6478897565412
exp ( dp ) dp 自然指数 exp(1.0) 2.71828182845905
floor ( numeric ) numeric 不大于参数的最大整数 floor(-42.8) -43
ln ( dp ) dp 自然对数 ln(2.0) 0.693147180559945
log ( dp ) dp 10 为底的对数 log(100.0) 2
log ( b numeric , x numeric ) numeric 指定底数的对数 log(2.0, 64.0) 6.0000000000
mod ( y , x ) (和参数类型相同) 除法 y / x 的余数(模) mod(9,4) 1
pi () dp "Pi" 常量 pi() 3.14159265358979
pow ( e dp , n dp ) dp 求一个数值的 e 次幂 pow(9.0, 3.0) 729
radians ( dp ) dp 把角度转为弧度 radians(45.0) 0.785398163397448
random () dp 0.0 到 1.0 之间的数值 random()  
round ( dp ) dp 圆整为最接近的整数 round(42.4) 42
round ( v numeric , s integer ) numeric 圆整为 s 位小数数字 round(42.4382, 2) 42.44
sqrt ( dp ) dp 平方根 sqrt(2.0) 1.4142135623731
trunc ( dp ) dp 截断(向零靠近) trunc(42.8) 42
trunc ( numeric , s integer ) numeric 截断为 s 小数位置的数字 trunc(42.4382, 2) 42.43

在上面的表中, dp 表示 double precision . 函数 exp ln log pow round (一个参数), sqrt trunc (一个参数)在用于 double precision 的地方也可以用于类型 numeric . 除非特别声明的函数之外, 返回 numeric 结果的函数接受 numeric 输入参数. 许多这些函数是在主机的系统 C 库上实现的;因此有关数值范围和精度方面的 函数行为可能因系统不同而不同.

Table 4-5. 三角函数

函数 描述
acos ( x ) 反余弦
asin ( x ) 反正弦
atan ( x ) 反正切
atan2 ( x , y ) tangent y / x 的反函数
cos ( x ) 余弦
cot ( x ) 余切
sin ( x ) 正弦
tan ( x ) 正切

所有三角函数的参数和返回类型都是 double precision