PostgreSQLの数多くの型に対する算術演算子が用意されています。 標準算術表現法が存在しない型(例えば、日付/時刻データ型)については、後続する節で実際の動作を説明します。
表 9.4は使用可能な算術演算子を示しています。
表9.4 算術演算子
演算子名 | 説明 | 例 | 結果 |
---|---|---|---|
+ | 和 | 2 + 3 | 5 |
- | 差 | 2 - 3 | -1 |
* | 積 | 2 * 3 | 6 |
/ | 商(整数の割り算では余りを切り捨て) | 4 / 2 | 2 |
% | 剰余(余り) | 5 % 4 | 1 |
^ | 累乗(左から右に適用) | 2.0 ^ 3.0 | 8 |
|/ | 平方根 | |/ 25.0 | 5 |
||/ | 立方根 | ||/ 27.0 | 3 |
! | 階乗 | 5 ! | 120 |
!! | 階乗(前置演算子) | !! 5 | 120 |
@ | 絶対値 | @ -5.0 | 5 |
& | ビットごとのAND | 91 & 15 | 11 |
| | ビットごとのOR | 32 | 3 | 35 |
# | ビットごとのXOR | 17 # 5 | 20 |
~ | ビットごとのNOT | ~1 | -2 |
<< | ビットごとの左シフト | 1 << 4 | 16 |
>> | ビットごとの右シフト | 8 >> 2 | 2 |
ビット演算子は整数データ型のみに使用できます。一方他の演算子は全ての数値データ型に使用できます。
また、ビット演算子は表 9.13に示すように、bit
、bit varying
ビット文字列型に対しても使用することができます。
表 9.5に使用可能な算術関数を示します。
この表内のdp
は、double precision
を意味します。
これら関数の多くは、異なる引数型を持つ複数の形で提供されています。
特に記述がある場合を除き、すべての形式の関数はその引数と同じデータ型を返します。
double precision
データに対する関数のほとんどはホストシステムのCライブラリの上層に実装されています。このため、精度と境界近くの場合の振舞いはホストシステムに依存して変わります。
表9.5 算術関数
表 9.6に乱数を生成する関数を示します。
表9.6 乱数関数
が返す値の特徴はシステムの実装に依存します。
暗号への利用は適していません。代わりにpgcryptoモジュールを参照してください。
random()
最後に、使用可能な三角関数を表 9.7に示します。
全ての三角関数はdouble precision
データ型の引数と戻り値を取ります。
それぞれの三角関数には、角度の単位をラジアンにするものと度にするものの2種類があります。
表9.7 三角関数
度単位の角度を扱う別の方法は、前に示した単位変換関数
とradians()
を使うことです。
しかし、角度を使う方法の方が、degrees()
sind(30)
のような特別な場合の丸め誤差を避けられるため、推奨されます。