PostgreSQL | PostgreSQL 基本構文 | 算術演算子を使用する
算術演算子は四則演算などの計算のほか、平方根や階乗などにも使用する。ここでは、算術演算子の使い方について説明する。
算術演算子の種類と使い方
PostgreSQL で使用できる算術演算子は次のとおりである。
+ 加算 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
上記の算術演算子は、すべての数値データ型で使用できる。
–
実際に試してみる。次のようなテストテーブルを作成する。
mydb=# create table test( num1 real, num2 real);
CREATE TABLE
mydb=#
次のようなデータをテーブルに追加する。
mydb=# insert into test values (15.4, 7.25), (-5.9, 9.0), (18.225, -7.3);
INSERT 0 3
mydb=# select * from test;
num1 | num2
--------+------
15.4 | 7.25
-5.9 | 9
18.225 | -7.3
(3 行)
そして SELECT コマンドを使用し、num1 カラムと num2 カラムに対して演算を行った結果を取得してみる。
mydb=# select num1, num2,
mydb-# num1 + num2 as "num1 + num2",
mydb-# num1 * num2 as "num1 * num2",
mydb-# num1 / num2 as "num1 / num2"
mydb-# from test;
num1 | num2 | num1 + num2 | num1 * num2 | num1 / num2
--------+------+-------------+-------------+-------------
15.4 | 7.25 | 22.65 | 111.649994 | 2.1241379
-5.9 | 9 | 3.1 | -53.100002 | -0.65555555
18.225 | -7.3 | 10.925 | -133.04251 | -2.4965754
(3 行)
算術演算子を使用して、カラムに保存されている値に対する演算結果を取得できる。
ビット演算子を使用する
算術演算子には、他にもビット演算を行う演算子が用意されている。
& ビット AND 91 & 15 -> 11
| ビット OR 32 | 3 -> 35
# ビット XOR 17 # 5 -> 20
~ ビット NOT ~1 -> -2
<< ビット左シフト 1 << 4 -> 16
>> ビット右シフト 8 >> 2 -> 2
ビット演算子は、整数データ型またはビット文字列で使用できる。
ビット AND 演算子は、左辺と右辺の同じ位置にあるビットを比較し、両方のビットが 1 の場合にのみ 1 にする。
85 & 15
0000000001010101 = 85
0000000000001111 = 15
------------------------
0000000000000101 = 5
ビット OR 演算子は、左辺と右辺の同じ位置にあるビットを比較し、どちらか一方でもビットが 1 の場合に 1 にする。
85 | 15
0000000001010101 = 85
0000000000001111 = 15
------------------------
0000000001011111 = 95
ビット XOR 演算子は、左辺と右辺の同じ位置にあるビットを比較し、どちらか一方だけが 1 の場合に 1 にする。両方が 1、または両方が 0 の場合は 0 にする。
85 # 15
0000000001010101 = 85
0000000000001111 = 15
------------------------
0000000001011010 = 90
ビット NOT 演算子は、右辺の値の各ビットを反転させる。つまり、0 なら 1、1 なら 0 にする。
~ 85
0000000001010101 = 85
------------------------
1111111110101010 = -86
ビット左シフトは、対象の値を指定した数だけ左へ移動する。
85 << 2
0000000001010101 = 85
------------------------
0000000101010100 = 340
ビット右シフトは、対象の値を指定した数だけ右へ移動する。
85 >> 2
0000000001010101 = 85
------------------------
0000000000010101 = 21
SELECT コマンドを使用して簡単に試してみる。
mydb=# select 85 & 15 as "85 & 15",
mydb-# 85 | 15 as "85 | 15",
mydb-# 85 # 15 as "85 # 15",
mydb-# ~ 85 as "~ 85",
mydb-# 85 << 2 as "85 << 2",
mydb-# 85 >> 2 as "85 >> 2";
85 & 15 | 85 | 15 | 85 # 15 | ~ 85 | 85 << 2 | 85 >> 2
---------+---------+---------+------+---------+---------
5 | 95 | 90 | -86 | 340 | 21
(1 行)
ビット演算子を使用して演算した結果を取得できる。
–
ここまで、PostgreSQL で提供される算術演算子の使い方について説明した。