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에서 문자열을 특정 구분자를 기준으로 효과적으로 분할하는 데 큰 도움을 줍니다. 복잡한 문자열 처리 작업에서도 이 함수를 적절히 활용하면 원하는 결과를 빠르게 얻을 수 있습니다. 이러한 기능을 잘 알아두면 데이터 처리 작업의 효율성을 크게 높일 수 있습니다.
함께보면 좋은글