PostgreSQL之SQL函数介绍及实践(一)
一、数学函数
PostgreSQL 提供的数学函数主要用来处理数值运算,在PostgreSQL中,所有的数学函数传入的参数可以为精度类型和整型。广泛意义上的数学函数包含数学函数,随机函数,三角函数及双曲函数。
1.1 数学函数
绝对值函数abs(x)
绝对值函数返回一个数值的正数。
示例:
hrdb=> --绝对值函数 hrdb=> SELECT abs(-10.20) AS result; result -------- 10.20 (1 row)
立方根函数cbrt(dp)
返回一个浮点数的立方根
示例:
hrdb=> --立方根函数cbrt(dp) SELECT cbrt(729.0) AS result; result ------------------- 9.000000000000002
向上截取函数ceil(dp or numeric)
返回等于或者大于传入参数的值
示例:
hrdb=> --向上截取函数 hrdb=> SELECT ceil(15.72) AS result; result -------- 16 (1 row) hrdb=> SELECT ceil(-121.21) AS result; result -------- -121 (1 row) hrdb=> SELECT ceil(18) AS result; result -------- 18 (1 row)
温馨提示:
向上截取函数还可以用ceiling进行截取,效果和ceil一样。感兴趣的同学可以下去自行验证。
向下截取函数floor(dp or numeric)
返回小于或者等于传入浮点数的值
示例:
hrdb=> --向下截取函数 hrdb=> SELECT floor(15.72) AS result; result -------- 15 (1 row) hrdb=> SELECT floor(-121.21) AS result; result -------- -122 (1 row) hrdb=> SELECT floor(18) AS result; result -------- 18 (1 row)
求商函数div(y numeric,x numeric)
返回被除数的商
示例:
hrdb=> --求商函数 hrdb=> SELECT div(10,3) AS result; result -------- 3 (1 row) hrdb=> SELECT div(8,4) AS result; result -------- 2 (1 row)
取余函数mod(y numeric,x numeric)
返回被除数的余数
示例:
hrdb=> --取余函数 hrdb=> SELECT mod(8,3) AS result; result -------- 2 (1 row) hrdb=> SELECT mod(10,4) AS result; result -------- 2 (1 row)
幂函数power(a dp,b dp)
返回第一个参数的指定幂次方
示例:
hrdb=> --幂函数 hrdb=> SELECT power(1024,2) AS result; result --------- 1048576 (1 row) hrdb=> SELECT power(2,3) AS result; result -------- 8
四舍五入函数round(v numeric,s int)
返回第一个参数四舍五入后的值
示例:
hrdb=> --四舍五入函数 hrdb=> SELECT round(10.28) AS result; result -------- 10 (1 row) hrdb=> SELECT round(10.1824,3) AS result; result -------- 10.182 (1 row) hrdb=> SELECT round(11.124378,4) AS result; result --------- 11.1244 (1 row)
平方根函数sqrt(dp or numeric)
返回传入参数的平方根
示例:
hrdb=> --平方根函数 SELECT sqrt(81) AS result; result -------- 9
符号函数 sign(dp or numeric)
返回-1 0 1 其中的一个值
示例:
hrdb=> --符号函数 hrdb=> SELECT sign(-10) AS result; result -------- -1 (1 row) hrdb=> SELECT sign(0) AS result; result -------- 0 (1 row) hrdb=> SELECT sign(13.2) AS result; result -------- 1 (1 row)
截取函数 trunc(v numeric,s int)
返回传入参数截取指定长度的值,不指定长度,默认为0
示例:
hrdb=> --截取函数 trunc hrdb=> SELECT trunc(10.25) AS result; result -------- 10 (1 row) hrdb=> SELECT trunc(11.287,2) AS result; result -------- 11.28 (1 row) hrdb=> SELECT trunc(11.2364,3) AS result; result -------- 11.236 (1 row)
1.2 随机函数
随机函数random()
返回0 到 1 之间的精度类型值
示例:
hrdb=> SELECT random(); random -------------------- 0.5765172911994441 (1 row)
返回随机字符串
示例:
hrdb=> --返回随机字符串 hrdb=> SELECT substr(md5(random()::varchar),10,6) AS result; result -------- d914dc (1 row)
1.3 三角函数
正弦函数sin(x)
返回角度的弧度值
示例:
hrdb=> --正弦函数 hrdb=> SELECT sin(30) AS result; result --------------------- -0.9880316240928618 (1 row)
温馨提示:
可能很多同学都熟悉三角函数的值,认为sin(30),就应该是0.5,即1/2,记住,这里返回的值是弧度值。如果想要返回sin(30)为角度值,在PostgreSQL中使用sind函数来实现。
示例:
hrdb=> select sind(30); sind ------ 0.5 (1 row)
余弦函数cos(x)
返回角度的弧度值
示例:
hrdb=> --余弦函数 hrdb=> SELECT cos(60) AS result; result --------------------- -0.9524129804151563 (1 row) hrdb=> SELECT cosd(60) AS result; result -------- 0.5 (1 row)
正切函数tan(x)
返回角度的弧度值
示例:
hrdb=> --正切函数 hrdb=> SELECT tan(90) AS result; result -------------------- -1.995200412208242 (1 row) hrdb=> SELECT tand(90) AS result; result ---------- Infinity
余切函数 cot(x)
返回角度的弧度值
示例:
hrdb=> --余切函数 hrdb=> SELECT cot(90) AS result; result --------------------- -0.5012027833801532 (1 row) hrdb=> SELECT cotd(90) AS result; result -------- 0 (1 row)
小结:
以上为常用的数学函数,双曲函数作为三角函数的推导函数,具有和三角函数相同的运算方法,包含加法,乘法,二倍角公式,半角公式等等。感兴趣的同学可以下去进行探究。