본문 바로가기
MY SQL

[MYSQL] 문자열 함수 SUBSTRING_INDEX / 여러개의 값이 있는 행 분리

by 꾸꾸집사 2025. 1. 8.

 

문자열 함수 substring_index를 공부해보자! 

 

 

1. 내가 하고자 한 것 

여러개의 값이 있는 행

 

 

2. 시도해 본 쿼리 

- 재귀함수(Recursive)를 이용해 장르 분리를 시도했다. 

- (쿼리 설명) anchor 부분 쿼리를 짜기 위해 1번째 장르와 남은(remaining) 장르를 구분하였다. 

 

- case when이 지저분하고 가독성이 떨어지는 듯 하다. 

 

 

 

3. 개선된 쿼리 

 

- substring_index를 이용해 개선해 보았다. 

- 훨씬 가독성이 좋아지고 쿼리가 간결해졌다! 굿 ❤🌞

 

 

 


substring_index 함수 

- 구분자를 기준으로, 왼쪽부터 지정된 구분자까지의 문자열을 반환한다. 

- 문법 구조: SUBSTRING_INDEX(string, delimiter, count)

  • string: 처리할 문자열, 컬럼
  • delimiter: 문자열을 나누는 기준이 되는 구분자 
  • count: 반환할 구분자의 위치
    • ex) 구분자 = ',' count = 2 라면 두번째까지 가져온다
  • 만약 string에 구분자가 없다면???? => string을 그대로 반환한다.  (이 특징 덕분에 case when 간결화 가능 💡) 
    • ex) SELECT SUBSTRING_INDEX('Action', ',', 1); -- "Action"

 

예시) count = 양수 일 때

SELECT SUBSTRING_INDEX('Action,Comedy,Drama', ',', 1); -- 'Action'
SELECT SUBSTRING_INDEX('Action,Comedy,Drama', ',', 2); -- 'Action,Comedy'
SELECT SUBSTRING_INDEX('Action,Comedy,Drama', ',', 3); -- 'Action,Comedy,Drama'

 

count = 음수 일 때

SELECT SUBSTRING_INDEX('Action,Comedy,Drama', ',', -1); -- 'Drama'
SELECT SUBSTRING_INDEX('Action,Comedy,Drama', ',', -2); -- 'Comedy,Drama'
SELECT SUBSTRING_INDEX('Action,Comedy,Drama', ',', -3); -- 'Action,Comedy,Drama'


TOP

Designed by 티스토리