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에서 제공되는 산술 연산자의 사용법에 대해 설명하였다.