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倍精度 を意味します。関数 explnlogpowround (引数 1 つ)、sqrt、および trunc (引数 1 つ)は double precision データ型の代わりとして numeric を使用することができます。特別に指定されない限り numeric データ型を返す関数は numeric データ型入力の引数を取ります。これらの関数の多くはホストシステムの C ライブラリの上層に実装されます。 境界近くの場合に於ける正確さと振舞はしたがってホストシステムに依存して変化します。

Table 6-4. 算術関数

関数返り値型説明結果
abs(x)(x と同じ)絶対値abs(-17.4)17.4
cbrt(dp)dp立方根cbrt(27.0)3
ceil(numeric)numeric引数より小さくない最小の整数ceil(-42.8)-42
degrees(dp)dp度に対応するラジアンdegrees(0.5)28.6478897565412
exp(dp)dp指数exp(1.0)2.71828182845905
floor(numeric)numeric引数より大きくない最大の整数floor(-42.8)-43
ln(dp)dp自然対数ln(2.0)0.693147180559945
log(dp)dp10 を底とした対数(常用対数)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(e dp, n dp)dpepow(9.0, 3.0)729
radians(dp)dpラジアンに対応する度radians(45.0)0.785398163397448
random()dp0.0 〜 1.0 の値random() 
round(dp)dp四捨五入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)dp平方根sqrt(2.0)1.4142135623731
trunc(dp)dp切捨てtrunc(42.8)42
trunc(numeric, 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)