算術関数と演算子

PostgreSQL 8.4.1文書
前のページ | 巻戻し | 第 9章関数と演算子 | 早送り | 次のページ

# 9.3. 算術関数と演算子

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

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

表 9-2. 算術演算子

演算子名 | 説明 | 例 | 結果
--- | --- | --- | ---
`+` | 和 | `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-10に示す、`bit`、`bit 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`)` | `numeric` | `y`/`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`)` | `numeric` | `b`を底とした対数 | `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`)` | `dp` | `a`の`b`乗 | `power(9.0, 3.0)` | `729`
``power`(`a` `numeric`, `b` `numeric`)` | `numeric` | `a`の`b`乗 | `power(9.0, 3.0)` | `729`
``radians`(`dp`)` | `dp` | 度に対応するラジアン | `radians(45.0)` | `0.785398163397448`
``random`()` | `dp` | 0.0 <= x < 1.0の範囲の乱数値 | `random()` |
``round`(`dp` or `numeric`)` | （入力型と同一） | 四捨五入 | `round(42.4)` | `42`
``round`(`v` `numeric`, `s` `int`)` | 切り捨て | round to `s` decimal places | `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`)` | `numeric` | `s`の桁で切り捨て | `trunc(42.4382, 2)` | `42.43`
``width_bucket`(`op` `numeric`, `b1` `numeric`, `b2` `numeric`, `count` `int`)` | `int` | `operand`が割り当てられる、`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`データ型の引数と戻り値を取ります。

表 9-4. 三角関数

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

前のページ | ホーム | 次のページ
比較演算子 | 上に戻る | 文字列関数と演算子