9.3. 數學函數和操作符

PostgreSQL 為許多類型提供了數學操作符。 對於那些在所有可能的組合中都沒有一般的數學傳統的類型 (比如,日期/時間類型),我們在隨後的章節裡描述實際的行為。

Table 9-2 顯示了可用的數學操作符。

Table 9-2. 數學操作符

操作符描述例子結果
+ 2 + 35
- 2 - 3-1
* 2 * 36
/ 除 (整數除法將截斷結果)4 / 22
% 模除 (求余)5 % 41
^ 冪(指數運算)2.0 ^ 3.08
|/ 平方根|/ 25.05
||/ 立方根||/ 27.03
! 階乘5 !120
!! 階乘 (前綴作符)!! 5120
@ 絕對值@ -5.05
& 二進制 AND91 & 1511
| 二進制 OR32 | 335
# 二進制 XOR17 # 520
~ 二進制 NOT~1-2
<< 二進制左移1 << 416
>> 二進制右移8 >> 22

按位操作操作符只能用於整數資料類型,而其它的操作符可以用於全部數值資料類型。 按位操作的操作符還可以用於位串類型 bitbit varying, 如 Table 9-10 所示。

Table 9-3 顯示了可用的數學函數。 在該資料表中,dp 資料表示double precision。 這些函數中有許多都有多種不同的形式,區別是參數不同。 除非特別指明,任何特定形式的函數都返回和它的參數相同的資料類型。 處理 double precision 資料的函數大多數是在 宿主系統的 C 庫的基礎上實現的;因此,準確度和 數值範圍方面的行為是根據宿主系統而變化的。

Table 9-3. 數學函數

函數返回類型描述例子結果
abs(x)(和x類型相同)絕對值abs(-17.4)17.4
cbrt(dp)dp立方根cbrt(27.0)3
ceil(dp 或者 numeric)與輸入相同不小於參數的最小的整數ceil(-42.8)-42
ceiling(dp or numeric)(與輸入相同)不小於參數的最小整數(ceil 的別名)ceiling(-95.3)-95
degrees(dp)dp把弧度轉為角度degrees(0.5)28.6478897565412
exp(dpnumeric)與輸入相同自然指數exp(1.0)2.71828182845905
floor(dpnumeric)與輸入相同不大於參數的最大整數floor(-42.8)-43
ln(dpnumeric)與輸入相同自然對數ln(2.0)0.693147180559945
log(dpnumeric)與輸入相同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()3.14159265358979
power(a dp, b dp)dpab 次冪power(9.0, 3.0)729
power(a numeric, b numeric)numericab 次冪power(9.0, 3.0)729
radians(dp)dp把角度轉為弧度radians(45.0)0.785398163397448
random()dp0.0 到 1.0 之間的隨機數值random() 
round(dp 或者 numeric)(與輸入相同)圓整為最接近的整數round(42.4)42
round(v numeric, s integer)numeric圓整為s位小數數字round(42.4382, 2)42.44
setseed(dp)integer為隨後的 random() 調用設置種子setseed(0.54823)1177314959
sign(dp 或者 numeric)(和輸入相同)參數的符號(-1, 0, +1)sign(-8.4)-1
sqrt(dp 或者 numeric)(和輸入相同)平方根sqrt(2.0)1.4142135623731
trunc(dp 或者 numeric)(和輸入相同)截斷(向零靠近)trunc(42.8)42
trunc(v numeric, s integer)numeric截斷為 s 小數位置的數字trunc(42.4382, 2)42.43
width_bucket(op numeric, b1 numeric, b2 numeric, count integer)integer 返回一個桶,這個桶是在一個有 count 個桶, 上界為 b1,下界為 b2 的等深柱圖中 operand 將被賦予的那個桶。 width_bucket(5.35, 0.024, 10.06, 5)3

最後,Table 9-4 顯示了可用的三角函數。 所有三角函數都有類型為 double precision 的參數和返回類型。

Table 9-4. 三角函數

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