SQL에서 문자열 다루기 4종 - 합치기, 자르기, 찾기, 바꾸기

2018. 10. 19. 00:40

SQL을 많이 사용하지 않지만, 남들이 사용한 SQL을 이해하는 게 필요할 때가 있다. 동일한 일을 하는 문법을 여러가지 알아야 한다는 것은 피곤한 일이지만 SQL은 많은 사람들이 사용하는 언어이기에 알아두면 유용할 때가 많다.

오늘은 SQL에서 문자열 다루는 방법에 대해서 알아보고자 한다. SQL에서 문자열 합치기, 자르기, 찾기, 바꾸기 하는 방법을 알아보도록 하자.


SQL_문자열_다루기



샘플 데이터셋이 필요하다. 샘플 데이터는 이전에 활용했던 부동산 매매데이터를 이용했다. 부동산 매매데이터의 샘플은 아래와 같다.
(참조: [부동산 API1] 공공데이터 활용하여 전월세 실거래가 가져오기)


부동산_매매데이터

(부동산 매매데이터 레이아웃)


SQL도 종류가 여러개 있지만, 특별한 경우를 제외하고는 문법이 크게 다르지 않은 것으로 알고 있다. 일단 여기서는 하둡(hadoop) 시스템에서 SQL Developer를 이용하여 알아보았다.



1. 문자열 합치기

동(dong)과 아파트 이름(apt_nm)을 합쳐보도록 하자. 문자열을 합치는 방법은 여러가지가 있겠지만, concat함수를 이용해서 문자열을 합칠 수 있다. concat의 장점은 2개 이상의 문자열도 합칠 수 있다는 것이다.


> select concat(dong, apt_nm) as juso

> from main.sale


위와 같이 실행하면 아래와 같이 동과 아파트 이름을 합칠 수 있다.


문자열_합치기



2. 문자열 자르기

day(거래일자)가 '11~20'으로 시작일과 종료일의 범위로 나타나 있다. 이에 시작일과 종료일을 나눠보도록 하겠다. 문자열을 나눌 때는 split이라는 함수를 사용하면 된다.

> select split(day,'~')[0] as start_day, split(day,'~')[1] as end_day 

> from main.sale


아래와 같이 문자열을 나누었다.


문자열_자르기


3. 특정문자 위치찾기

특정문자 위치는 instr함수를 이용하여 찾을 수 있다. price에서 ','의 위치를 찾아보았다.

> SELECT instr(price,',') as position

> FROM main.sale


아래와 같이 문자열의 위치를 찾을 수 있었다.


문자_위치찾기


4. 문자 바꾸기

특정 문자를 바꾸는 함수는 replace함수를 이용하면 된다. price에서 ','가 있어 이를 ''(공백)으로 변경해 보았다.

> SELECT replace(price, ',' , '') as new_price  

> FROM main.sale


아래와 같이 ','를 공백으로 변경하였다. 


문자열_바꾸기




오늘은 이렇게 SQL에서 문자열을 합치고, 자르고, 찾고, 바꾸는 방법에 대해서 알아보았다. SQL마다 문법이 조금씩 다르니 위와 문법으로 실행이 되지 않은 경우, 사용하는 SQL문법에 맞는 함수를 찾아야 한다. 함수를 이용하여 SQL에서도 쉽게 문자열을 다룰 수 있었다.


오픈API를 사용하면 다양한 재미있는 일들을 해 볼 수 있다. 파이썬을 활용한 오픈API 사용이 궁금하다면 아래 글을 참조해보자.

(참조: 오픈API를 활용한 사례는 어떤 것들이 있을까?)


댓글()