본문 바로가기
IT_Developers/MySQL

MySQL - SUBSTRING_INDEX() / 문자열 자르기 split

by 고코더 2018. 2. 8.


mysql 에서 explode 같이 구분 문자열 기준으로 잘라서 가져오기


안녕하세요. 고코더 입니다.

오늘은 MYSQL 에서 문자열 함수 중에 split 혹은 explode 와 같이
특정 문자 기준으로 스트링을 나눠서 가져오는 방법을 배워 보도록 하겠습니다.

SUBSTRING_INDEX는 참 재밌고 활용도 많은 함수입니다.

▼사용법은 아래와 같습니다.
SUBSTRING_INDEX(
     1번째 인수 : 컬럼명
     2번째 인수 : 기준문자, 구분 문자
     3번째 인수 : 보여질 위치, 위치 기준 음수(-)는 뒷부분 부터, 양수(+)는 앞부분 부터
)



간단하게 실무 예를 들면
url이 저장된 컬럼에서 .com 과 같은 뒷 부분 마지막 도메인만
가져와야 한다면 이 함수가 제격이라고 생각합니다.

▼ 만약에 가장 도메인 뒷 주소만 가져와야 한다면 아래 처럼 작성하시면 되겠죠
1
SUBSTRING_INDEX('gocoder.tistory.com''.'- 1)
cs

▼이번엔 mysql을 열어보시고 아래 SQL을 실행시켜 보겠습니다.
1
2
3
4
5
6
7
8
-- gocoder.tistory.com 을 . <- 기준으로 문자열을 가져와봅시다.!
SELECT 
    SUBSTRING_INDEX('gocoder.tistory.com''.'1),
    SUBSTRING_INDEX('gocoder.tistory.com''.'2),
    SUBSTRING_INDEX('gocoder.tistory.com''.'3),
    SUBSTRING_INDEX('gocoder.tistory.com''.'- 1),
    SUBSTRING_INDEX('gocoder.tistory.com''.'- 2),
    SUBSTRING_INDEX('gocoder.tistory.com''.'- 3)
cs

▼ 차례대로 도메인을 .(점)을 기준으로 데이터를 가져왔습니다.
밑에 그림을 혹은 제가 드린 예시인 SQL만 돌려보시면 이해가 완벽히 가실거라 생각이 됩니다.


특정 URL만 제거 한다 거나 규칙적인 데이터의 일부분만 보여줘야 하는 등
다양한 이유에서 많이 쓰게 될 문자열 함수라고 생각 됩니다.
마무리

 도메인 다루기에 정말 편리하네요. 


댓글