PostgreSQL:數字——型別、運算子和函式

Ryan_Bai發表於2020-11-30

數字型別

數值型別

數值型別由兩個位元組,4 位元組和 8 位元組的整數,4 位元組和 8 位元組的浮點數和可選精度的小數。下表列出了可用的型別。

名稱 儲存長度 描述 範圍
smallint 2 bytes 小範圍整數型別 -32768 to +32767
integer 4 bytes 整數型別 -2147483648 to +2147483647
bigint 8 bytes 大範圍資料型別 -9223372036854775808 to 9223372036854775807
decimal 可變 使用者指定精度 小數點前 131072 位;小數點後的 16383 位
numeric 可變 使用者指定精度 小數點前 131072 位;小數點後的 16383 位
real 4 bytes 變長,不精確 6 位十進位制精度
double precision 8 bytes 變長,不精確 15 位十進位制精度
smallserial 2 bytes small 自增序列 1 to 32767
serial 4 bytes integer 自增序列 1 to 2147483647
bigserial 8 bytes bigint 自增序列 1 to 9223372036854775807

decimal  和 numeric 是等效的。可以儲存指定精度的多位資料。比如帶小數位的資料。適用於要求計算準確的數值運算。

貨幣型別

貨幣型別儲存的貨幣金額與一個固定的分數精度。可以轉換為金錢的數字,int 和 bigint 資料型別的值。不推薦使用浮點數來處理金錢的潛力,由於舍入誤差。

名稱 儲存長度 描述 範圍
money 8 bytes currency amount -92233720368547758.08 to +92233720368547758.07

運算子

假設變數 a 的值為 2,而變數 b 的值為 3:

運算子 描述 例項
+ 加法——在運算子的任何一邊新增值 a + b 得 5
- 減法——從左手運算元減去右手運算元 a - b 得 -1
* 乘法——將運算子兩邊的值相乘 a * b 得 6
/ 除法——用左手運算元除以右手運算元 b / a 得 1
% 模數——左手運算元除以右手運算元並返回餘數 b % a 得 1
^ 求冪——這給出了右手運算元的指數值 a ^ b 得 8
|/ 平方根 |/ 25.0 得 5
||/ 立方根 ||/ 27.0 得 3
!/ 階乘 5 ! 得120
!! 階乘(字首運算子) !! 5 得 120

函式

數值函式

函式 返回型別 描述 例子 結果
abs(x) 絕對值 abs(-17.4) 17.4
cbrt(double) 立方根 cbrt(27.0) 3
ceil(double/numeric) 不小於引數的最小的整數 ceil(-42.8) -42
degrees(double) 把弧度轉為角度 degrees(0.5) 28.6478897565412
exp(double/numeric) 自然指數 exp(1.0) 2.71828182845905
floor(double/numeric) 不大於引數的最大整數 floor(-42.8) -43
ln(double/numeric) 自然對數 ln(2.0) 0.693147180559945
log(double/numeric) 10為底的對數 log(100.0) 2
log(b numeric,x numeric) numeric 指定底數的對數 log(2.0, 64.0) 6.0000000000
mod(y, x) 取餘數 mod(9,4) 1
pi() double "π"常量 pi() 3.14159265358979
power(a double, b double) double 求a的b次冪 power(9.0, 3.0) 729
power(a numeric, b numeric) numeric 求a的b次冪 power(9.0, 3.0) 729
radians(double) double 把角度轉為弧度 radians(45.0) 0.785398163397448
random() double 0.0 到 1.0 之間的隨機數值 random()
round(double/numeric) 圓整為最接近的整數 round(42.4) 42
round(v numeric, s int) numeric 圓整為 s 位小數數字 round(42.438,2) 42.44
sign(double/numeric) 引數的符號(-1,0,+1) sign(-8.4) -1
sqrt(double/numeric) 平方根 sqrt(2.0) 1.4142135623731
trunc(double/numeric) 截斷(向零靠近) trunc(42.8) 42
trunc(v numeric, s int) numeric 截斷為s小數位置的數字 trunc(42.438,2) 42.43

三角函式

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

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31490526/viewspace-2738235/,如需轉載,請註明出處,否則將追究法律責任。

相關文章