이번 포스팅에선 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 (500, 0, NULL);
insert into SampleMath(m, n, p) values (-180, 0, NULL);
insert into SampleMath(m, n, p) values (NULL, NULL, NULL);
insert into SampleMath(m, n, p) values (NULL, 7, 3);
insert into SampleMath(m, n, p) values (NULL, 5, 2);
insert into SampleMath(m, n, p) values (NULL, 4, NULL);
insert into SampleMath(m, n, p) values (8, NULL, 3);
insert into SampleMath(m, n, p) values (2.27, 1, NULL);
insert into SampleMath(m, n, p) values (5.555,2, NULL);
insert into SampleMath(m, n, p) values (NULL, 1, NULL);
insert into SampleMath(m, n, p) values (8.76, NULL, NULL);
|
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', NULL, NULL);
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', NULL, NULL);
insert into SampleStr (str1, str2, str3) values ('aBC', NULL, NULL);
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에서 다룰 수 있는 여러 함수들에 대해 정리해봤다.
'SQL' 카테고리의 다른 글
SQL - 기초적인 함수 사용해보기 (2) - 뷰, 서브쿼리 (0) | 2023.03.24 |
---|---|
SQL - 기초적인 함수 사용해보기 (0) | 2023.03.19 |