Language/SQL

[MYSQL] SUBSTRING_INDEX() 함수로 구분자 기준(콤마 분리) 분할하기

멱군 2023. 3. 14. 11:00

데이터를 처리하다 보면 종종 문자열을 특정 구분자를 기준으로 분할해야 할 때가 있습니다. 특히 MySQL에서는 SUBSTRING_INDEX() 함수를 사용하여 이 작업을 수행할 수 있습니다. 이번 글에서는 이 함수의 사용법과 예제를 통해 문자열 분할 방법을 상세하게 알아보겠습니다.

 

1. SUBSTRING_INDEX() 함수란?

SUBSTRING_INDEX() 함수는 주어진 문자열에서 특정 구분자를 기준으로 원하는 부분의 문자열을 추출하는 데 사용됩니다. 기본 구조는 아래와 같습니다.

SUBSTRING_INDEX(string, delimiter, count)
  • string: 검색하려는 문자열
  • delimiter: 사용할 구분 기호
  • count: 구분 기호의 발생 횟수를 지정

 

2. 기본적인 사용법

SELECT SUBSTRING_INDEX('apple,banana,orange,pear', ',', 2);

위 예제의 경우 결과는 'apple,banana'입니다.

  • count 값이 양수이면 문자열의 처음부터,
  • 음수이면 문자열의 끝에서부터

SUBSTRING_INDEX()은 해당 구분자를 찾아 추출합니다.

위의 방법으로 모든 위치의 값을 넣어서 출력해보도록하겠습니다. 

SELECT SUBSTRING_INDEX('apple,banana,orange,pear', ',', 1);
SELECT SUBSTRING_INDEX('apple,banana,orange,pear', ',', 2);
SELECT SUBSTRING_INDEX('apple,banana,orange,pear', ',', 3);
SELECT SUBSTRING_INDEX('apple,banana,orange,pear', ',', 4);
SELECT SUBSTRING_INDEX('apple,banana,orange,pear', ',', -1);
SELECT SUBSTRING_INDEX('apple,banana,orange,pear', ',', -2);

위 코드의 결과 값은 다음과 같습니다.

  • count값(1): 'apple'
  • count값(2): 'apple,banana'
  • count값(3): 'apple,banana,orange'
  • count값(4): 'apple,banana,orange,pear'
  • count값(-1): 'pear'
  • count값(-2): 'orange,pear'

 

3. 원하는 부분만 정확하게 추출하기

원하는 부분만 정확하게 추출하려면 SUBSTRING_INDEX() 함수를 두 번 사용해야 합니다.

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('apple,banana,orange,pear', ',', 3), ',', -1);

위 예제의 경우, 첫 번째 SUBSTRING_INDEX() 함수에서는 'apple,banana,orange'를 반환하고, 그 결과를 기반으로 두 번째 함수가 'orange'를 반환합니다.

만약 apple의 값을 원한다면 3을 1로 변경해주면 됩니다.

 

결론

SUBSTRING_INDEX() 함수는 MySQL에서 문자열을 특정 구분자를 기준으로 효과적으로 분할하는 데 큰 도움을 줍니다. 복잡한 문자열 처리 작업에서도 이 함수를 적절히 활용하면 원하는 결과를 빠르게 얻을 수 있습니다. 이러한 기능을 잘 알아두면 데이터 처리 작업의 효율성을 크게 높일 수 있습니다.

 

함께보면 좋은글

 

[Mysql] 컬럼값이 "학년/반/번호" 일 때 "/"로 나눈 값을 기준으로 정렬하기

MySQL에서 특정 패턴을 가진 문자열 데이터를 정렬하는 것은 데이터 관리 및 표시에 있어서 중요한 과제 중 하나입니다. 특히 "학년/반/번호"와 같이 하나의 컬럼에 여러 정보가 '/' 구분자를 통해

devit.koreacreatorfesta.com