爲了處理數據庫中的業務數據,須要使用SQL函數去適當處理,一般經常使用的函數都內置在數據庫中。但業務需求僅僅依賴於數據庫內置的函數遠遠不夠,所以一個數據庫若是能夠提供自定義函數來實現業務需求,對於數據庫自己來講,擴展性更強。在PostgreSQL中,PostgreSQL不只支持豐富的數據類型,也支持豐富的 SQL 函數。當在 SQL 函數中傳入的參數不是 PostgreSQL 指望的數據類型,PostgreSQL 將會嘗試在執行 SQL 函數以前,對傳入的參數進行隱式轉換。同時,PostgreSQL 也支持自定義函數,自定義函數涉及到 PostgreSQL 中的SQL函數擴展內容,屬於服務器編程內容,在此處不作詳細介紹。數據庫
1、數學函數編程
PostgreSQL 提供的數學函數主要用來處理數值運算,在PostgreSQL中,全部的數學函數傳入的參數能夠爲精度類型和整型。普遍意義上的數學函數包含數學函數,隨機函數,三角函數及雙曲函數。服務器
1.1 數學函數dom
絕對值函數abs(x)
絕對值函數返回一個數值的正數。
示例:ide
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)
返回等於或者大於傳入參數的值
示例:code
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同樣。感興趣的同窗能夠下去自行驗證。md5
向下截取函數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)
小結:
以上爲經常使用的數學函數,雙曲函數做爲三角函數的推導函數,具備和三角函數相同的運算方法,包含加法,乘法,二倍角公式,半角公式等等。感興趣的同窗能夠下去進行探究。