算術演算子の使い方

算術演算子は四則演算などの計算のほか、平方根や階乗などの計算を行う場合に使用する演算子です。ここでは PostgreSQL のける算術演算子の使い方について解説します。

(Last modified: )

算術演算子の種類と使い方

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

上記の算術演算子はすべての数値データ型で使用することができます。

-- --

では実際に試してみます。次のようなテスト用のテーブルを作成しました。

create table test(
  num1 real,
  num2 real
);

算術演算子の種類と使い方(1)

次のようなデータをテーブルに追加しました。

insert into test values
  (15.4, 7.25),
  (-5.9, 9.0),
  (18.225, -7.3);

算術演算子の種類と使い方(2)

それでは SELECT コマンドを使って num1 カラムと num2 カラムに対して演算を行った結果を取得してみます。

select num1, num2, 
  num1 + num2 as "num1 + num2", 
  num1 * num2 as "num1 * num2", 
  num1 / num2 as "num1 / num2" 
  from test;

算術演算子の種類と使い方(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 コマンドを使って簡単に試してみます。

select 85 & 15 as "85 & 15",
  85 | 15 as "85 | 15",
  85 # 15 as "85 # 15",
  ~85 as "~85",
  85 << 2 as "85 << 2",
  85 >> 2 as "85 >> 2";

ビット演算子の使い方(1)

ビット演算子を使って演算した結果を取得しました。

-- --

PostgreSQL で用意されている算術演算子の使い方について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。