본문 바로가기
SQL

SQL - 기초적인 함수 사용해보기 (3) - 함수

by Tiabet 2023. 4. 1.

이번 포스팅에선 SQL의 산술 함수와 문자열 함수, 날짜 함수에 대해서 정리해보려고 한다.

 

1) 산술 함수

SQL에도 수치를 계산하기 위한 산술 함수들이 존재한다. 파이썬, R과 크게 다르지는 않아서 공부하는 데에 어려움은 없는 것 같다.

 

우선 테스트를 위해 아래와 같은 테이블 하나를 만들어주었다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
create table SampleMath
(m  numeric (10,3),
 n  integer,
 p  integer);
 
insert into SampleMath(m, n, p) values (5000NULL);
insert into SampleMath(m, n, p) values (-1800NULL);
insert into SampleMath(m, n, p) values (NULLNULLNULL);
insert into SampleMath(m, n, p) values (NULL73);
insert into SampleMath(m, n, p) values (NULL52);
insert into SampleMath(m, n, p) values (NULL4NULL);
insert into SampleMath(m, n, p) values (8NULL3);
insert into SampleMath(m, n, p) values (2.271NULL);
insert into SampleMath(m, n, p) values (5.555,2NULL);
insert into SampleMath(m, n, p) values (NULL1NULL);
insert into SampleMath(m, n, p) values (8.76NULLNULL);
cs

 

아래 코드는 음수값을 양수로 바꿔주는 abs 함수다. (절댓값)

1
2
select m, abs(m) as abs_m
from SampleMath;
cs

abs(m)을 통해  간단하게 m 열에 절댓값을 씌울 수 있다.

다음은 나눗셈을 진행해서 나머지를 구해주는 mod() 함수다. 고객의 데이터를 처리하다 보면 나눗셈을 처리해줘야 할 일이 많을 것 같다. 

1
2
3
select n, p, mod(n, p) as mod_col
from SampleMath;
 
cs

마지막으로 반올림을 진행해주는 round() 함수다. 사용법이 파이썬에서와 똑같다.

1
2
select m, n, round(m, n) as round_col
from SampleMath;
cs

 

round(m, n)으로 2가지 인자를 넣어주면 m을 소수점 n번째 자리까지 반올림해서 구해준다는 의미이다.

 

2) 문자열 함수

문자열 함수를 살펴보기 위해 아래와 같은 데이터를 추가해주었다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
create table SampleStr
(str1  varchar(40),
 str2  varchar(40),
 str3  varchar(40));
 
insert into SampleStr (str1, str2, str3) values ('가나다''라마'NULL);
insert into SampleStr (str1, str2, str3) values ('abc''def'NULL);
insert into SampleStr (str1, str2, str3) values ('김''철수''입니다');
insert into SampleStr (str1, str2, str3) values ('aaa'NULLNULL);
insert into SampleStr (str1, str2, str3) values (NULL'가가가'NULL);
insert into SampleStr (str1, str2, str3) values ('@!#$%'NULL,    NULL);
insert into SampleStr (str1, str2, str3) values ('ABC',    NULLNULL);
insert into SampleStr (str1, str2, str3) values ('aBC',    NULLNULL);
insert into SampleStr (str1, str2, str3) values ('abc철수''abc''ABC');
insert into SampleStr (str1, str2, str3) values ('abcdefabc','abc''ABC');
insert into SampleStr (str1, str2, str3) values ('아이우''이','우');
cs

코드가 살짝 꼬여서 데이터가 약간 다르게 입력되었지만, 그대로 진행했다.

 

제일 많이 사용하는 concat 함수다. concat은 파이썬에서도 여러 방면으로 사용되는 함수다.

1
2
select str1, str2, concat(str1, str2) as str_concat
from SampleStr;
cs

str1 과 str2 가 합쳐져서 str_concat으로 나온 것을 확인할 수 있다.

 

다음으로 문자열을 소문자로 바꿔주는 lower 함수다.

1
2
select str1, lower(str1) as low_str
from SampleStr;
cs

역시 어렵지 않게 구현이 가능하다.

 

마지막으로 replace 함수로 문자열을 치환하는 방법이다.

replace 함수는 인자로 3개를 받을 수 있는데, 순서대로 대상 문자열, 대상문자열에서 치환할 문자열, 치환 후 문자열 을 의미한다.

1
2
3
select str1, str2, str3,
    replace(str1, str2, str3) as rep_str
from SampleStr;
cs

문자열이 치환됐음을 잘 확인할 수 있다.

 

3) 날짜 함수

날짜 함수에 대해선 간단하게 시간을 추출하는 방법에 대해 알아보고자 한다.

1
select current_date, current_time, current_timestamp;
cs

SQL에 내장된 current_date, time, timestamp 함수들로 현재 위치를 선택할 수 있다.

이를 extract 함수를 이용해 연, 월, 일 정보도 추출해서 만들 수 있다.

1
2
3
4
5
6
7
8
select
    current_timestamp,
    extract(year from current_timestamp) as year,
    extract(month from current_timestamp) as month,
    extract(day    from current_timestamp) as day,
    extract(hour from current_timestamp) as hour,
    extract(minute from current_timestamp) as minute,
    extract(second from current_timestamp) as second;
cs

 

 

이상으로 SQL에서 다룰 수 있는 여러 함수들에 대해 정리해봤다.