★PostgreSQLカンファレンス2024 12月6日開催/チケット販売中★
他のバージョンの文書 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

9.3. 算術関数と演算子

PostgreSQLの数多くの型に対する算術演算子が用意されています。標準算術表現法に従わない型(例えば、日付/時刻データ型)については、後続する節で実際の動作を説明します。

表9-2は使用可能な算術演算子を示しています。

表 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

バイナリ演算子は内部データ型のみに使用できます。一方他の演算子は全ての数値データ型に使用できます。また、バイナリ演算子は表9-10に示す、bitbit varyingビット文字列型に対しても使用することができます。

表9-3に使用可能な算術関数を示します。 この表内のdpは、double precisionを意味します。これら関数の多くは、異なる引数型を持つ複数の形で提供されています。特別な場合を除き、ある任意形式の関数はその引数と同じデータ型を返します。double precisionデータに対する関数のほとんどはホストシステムのCライブラリの上層に実装されています。このため、境界近くの場合の精度と振舞いはホストシステムに依存して変わります。

表 9-3. 算術関数

関数戻り値型説明結果
abs(x) (入力と同じ)絶対値abs(-17.4)17.4
cbrt(dp) dp立方根cbrt(27.0)3
ceil(dp or numeric) (入力型と同一)引数より小さくない最小の整数ceil(-42.8)-42
ceiling(dp or numeric) (入力型と同一)引数より小さくない最小の整数(ceilの別名)ceiling(-95.3)-95
degrees(dp) dpラジアンに対応する度degrees(0.5)28.6478897565412
div(y numeric, x numeric) numericy/xの整数商div(9,4)2
exp(dp or numeric) (入力型と同一)指数exp(1.0)2.71828182845905
floor(dp or numeric) (入力型と同一)引数より大きくない最大の整数floor(-42.8)-43
ln(dp or numeric) (入力型と同一)自然対数ln(2.0)0.693147180559945
log(dp or numeric) (入力型と同一)10を底とした対数(常用対数)log(100.0)2
log(b numeric, x numeric)numericbを底とした対数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) dpabpower(9.0, 3.0)729
power(a numeric, b numeric)numericabpower(9.0, 3.0)729
radians(dp) dp度に対応するラジアンradians(45.0)0.785398163397448
random() dp0.0 <= x < 1.0の範囲の乱数値random() 
round(dp or numeric) (入力型と同一)四捨五入round(42.4)42
round(v numeric, s int)numeric小数点sの位まで四捨五入して切捨てround(42.4382, 2)42.44
setseed(dp) void今後のrandom()呼び出しで使用されるシード(種)の設定(-1.0から1.0までの境界を含む値)setseed(0.54823) 
sign(dp or numeric) (入力型と同一)引数の符号(-1、0、+1)sign(-8.4)-1
sqrt(dp or numeric) (入力型と同一)平方根sqrt(2.0)1.4142135623731
trunc(dp or numeric) (入力型と同一)切り捨てtrunc(42.8)42
trunc(v numeric, s int)numericsの桁で切り捨てtrunc(42.4382, 2)42.43
width_bucket(op numeric, b1 numeric, b2 numeric, count int) intoperandが割り当てられる、b1からb2までのバケット数countの等深度ヒストグラムのバケットを返すwidth_bucket(5.35, 0.024, 10.06, 5)3
width_bucket(op dp, b1 dp, b2 dp, count int)int operandが割り当てられる、b1からb2までのバケット数countの等深度ヒストグラムのバケットを返す width_bucket(5.35, 0.024, 10.06, 5)3

最後に、使用可能な三角関数を表9-4に示します。全ての三角関数はdouble precisionデータ型の引数と戻り値を取ります。三角関数の引数はラジアンで表されます。逆関数の返り値はラジアンで表されます。上記のradians()degrees()といった単位変換関数を参照して下さい。

表 9-4. 三角関数

関数説明
acos(x) 逆余弦関数
asin(x) 逆正弦関数
atan(x) 逆正接関数
atan2(y, x) y/xの逆正接関数
cos(x) 余弦関数
cot(x) 余接関数
sin(x) 正弦関数
tan(x) 正接関数