数学函数

HGDB 为内建的数据类型提供了大量的函数,psql 命令 \df 可以用于显示所有可用的函数和操作符的列表。下表是一些数学函数:

函数 返回类型 描述 例子 结果
abs(x) (和输入相同) 绝对值 abs(-17.4) 17.4
cbrt(dp) dp 立方根 cbrt(8.0) 2
ceil(dp or numeric) (和输入相同) 不小于参数的
最近的整数
ceil(-42.8) -42
ceiling(dp or numeric) (和输入相同) 不小于参数的
最近的整数
(ceil的别名)
ceil(-95.3) -95
degrees(dp) dp 把弧度转为角度 degrees(0.5) 28.64788975
654116
div(y numeric,x numeric) numeric y/x 的整数商 div(9,4) 2
exp(dp or numeric) (和输入相同) 指数 exp(1.0) 2.71828182
84590452
floor(dp or numeric) (和输入相同) 不大于参数的
最近的整数
floor(-42.8) -43
ln(dp or numeric) (和输入相同) 自然对数 ln(2.0) 0.693147180
5599453
log(dp or numeric) (和输入相同) 以10为底的对数 log(100.0) 2.00000000
00000000
log10(dp or numeric) (和输入相同) 以10为底的对数 log10(100.0) 2.000000000
0000000
log(b numeric,
x numeric)
numeric 以 b 为底的对数 log(2.0,64.0) 6.00000000
00000000
mod(y, x) (和参数类型相同) y/x 的余数 mod(9,4) 1
pi() dp ”π“的常数 pi() 3.14159265
3589793
power(a dp, b dp) dp 求 a 的 b 次幂 power(9.0,3.0) 729.0000000
000000000
power(a numeric, b numeric) numeric 求 a 的 b 次幂 power(9.0,3.0) 729.0000000
000000000
radians(dp) dp 把角度转为弧度 radians(45.0) 0.78539816
33974483
round(dp or numeric) (和输入相同) 圆整为最接近的整数 round(42.4) 42
round(v numeric, s int) numeric 圆整为 s 位小数数字 round(42.4382,2) 42.44
scale(numeric) integer 参数的精度
(小数点后的位数)
scale(8.41) 2
sign(dp or numeric) (和输入相同) 参数的符号(-1,0,+1) sign(-8.4) -1
sqrt(dp or numeric) (和输入相同) 平方根 sqrt(2.0) 1.4142135
62373095
trunc(dp or numeric) (和输入相同) 截断(向零靠近) trunc(42.8) 42
trunc(v numeric,
s int)
numeric 截断为 s 位小数位置的数字 trunc(42.4382,2) 42.43
width_bucket
(op dp, b1 dp, b2 dp, count int)
int 返回一个桶号,这个桶是在一个柱状图中 operand 将被分配的那个桶,该柱状图有 count 个散布在范围 b1 到 b2 上的等宽桶。对于超过该范围的输入,将返回0或者 count+1 width_bucket
(5.35,0.024,
10.06,5)
3
width_bucket
(op numeric, b1 numeric, b2 numeric, count int)
int 返回一个桶号,这个桶是在一个柱状图中 operand 将被分配的那个桶,该柱状图有 count 个散布在范围 b1 到 b2 上的等宽桶。对于超过该范围的输入,将返回0或者 count+1 width_bucket
(5.35,0.024,
10.06,5)
3
width_bucket
(operand anyelement, thresholds anyarray)
int 返回一个桶号,这个桶是在给定数组中 operand 将被分配的桶,该数组列出了桶的下界。对于一个低于第一个下界的输入返回0。thresholds 数组必须被排好序,最小的排在最前面,否则将会得到意想不到的结果 width_bucket
(now(),
array[‘yesterday’,
‘today’,
‘tomorrow’]
::timestamptz[ ])
2