[11/15開催: PostgreSQL Conference Japan 2019 参加受付中] 
他のバージョンの文書 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

6.3. 算術関数と演算子

PostgreSQL の数多くの型に対する算術演算子が用意されています。 すべての可能な演算に対して共通の算術規約のない型 (たとえば、日付/時刻データ型) については、後続する節で実際の動作を説明します。

Table 6-2 に、使用可能な算術演算子を示します。

Table 6-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

同様に、「二項」演算子も、ビット列データ型 BIT および BIT VARYING に対して使用できます (Table 6-3 参照)。&|、および # に対するビット列引数は同じ長さでなければなりません。 下記の表で示されているように、ビットシフトの場合、元の列の長さは保持されます。

Table 6-3. ビット列二項演算子

結果
B'10001' & B'01101'00001
B'10001' | B'01101'11101
B'10001' # B'01101'11110
~ B'10001'01110
B'10001' << 301000
B'10001' >> 200100

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

Table 6-4. 算術関数

関数返り値型説明結果
abs(x)(x と同じ)絶対値abs(-17.4)17.4
cbrt(dp)dp立方根cbrt(27.0)3
ceil(dp もしくは numeric)(入力型と同一)引数より小さくない最小の整数ceil(-42.8)-42
degrees(dp)dp度に対応するラジアンdegrees(0.5)28.6478897565412
exp(dp もしくは numeric)(入力型と同一)指数exp(1.0)2.71828182845905
floor(dp もしくは numeric)(入力型と同一)引数より大きくない最大の整数floor(-42.8)-43
ln(dp もしくは numeric)(入力型と同一)自然対数ln(2.0)0.693147180559945
log(dp もしくは numeric)(入力型と同一)10 を底とした対数(常用対数)log(100.0)2
log(b numeric, x numeric)numeric底に対する対数 blog(2.0, 64.0)6.0000000000
mod(y, x)(引数の型と同じ)y/x の剰余mod(9,4)1
pi()dp"円周率(π)" 定数pi()3.14159265358979
pow(x dp, e dp)dpepow(9.0, 3.0)729
pow(x numeric, e numeric)numericepow(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
sign(numeric もしくは 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

最後に、使用可能な三角関数を Table 6-5 に示します。すべての三角関数にはdouble precision (倍精度) データ型の引数と返り値があります。

Table 6-5. 三角関数

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