데이터를 처리하다 보면 종종 문자열을 특정 구분자를 기준으로 분할해야 할 때가 있습니다. 특히 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에서 문자열을 특정 구분자를 기준으로 효과적으로 분할하는 데 큰 도움을 줍니다. 복잡한 문자열 처리 작업에서도 이 함수를 적절히 활용하면 원하는 결과를 빠르게 얻을 수 있습니다. 이러한 기능을 잘 알아두면 데이터 처리 작업의 효율성을 크게 높일 수 있습니다.
함께보면 좋은글
'Language > SQL' 카테고리의 다른 글
[MySQL] JPA group by 구문에서 error (0) | 2023.08.21 |
---|---|
[Mysql] 컬럼값이 "학년/반/번호" 일 때 "/"로 나눈 값을 기준으로 정렬하기 (0) | 2023.03.14 |
[MYSQL] 숫자, 문자열, 날짜시간 변환하기 CAST함수 (0) | 2023.03.14 |
[SQLITE3] datetime 으로 년, 월, 일 시작 날짜 구하기 (0) | 2023.02.08 |
[MYSQL] ERROR errno: 1242 "ER_SUBQUERY_NO_1_ROW" 오류 대처 방법 (0) | 2023.01.06 |