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
.
|