MySQL SUBSTRING_INDEX() 함수와 count 인수
MySQL의 SUBSTRING_INDEX() 함수는 문자열을 지정한 구분자(delimiter)를 기준으로 잘라내는 데 사용됩니다. 그런데 만약 count 인수에 전달된 값이 해당 구분자가 문자열 안에 등장하는 총 횟수보다 크다면 어떻게 될까요?
이 경우 함수는 에러를 반환하지 않고, 원본 문자열 전체를 그대로 출력합니다. 아래 예시를 통해 쉽게 확인할 수 있습니다.
예시
mysql> Select SUBSTRING_INDEX('My Name is Ram','a',3);
+-----------------------------------------+
| SUBSTRING_INDEX('My Name is Ram','a',3) |
+-----------------------------------------+
| My Name is Ram |
+-----------------------------------------+
1 row in set (0.00 sec)결과 분석
위 쿼리는 입력 문자열과 동일한 결과를 반환했습니다. 그 이유는 다음과 같습니다.
- count 값으로 3이 지정되었습니다.
- 하지만 문자열 'My Name is Ram'에는 구분자인 'a'가 두 번만 등장합니다.
- 즉, count(3)가 구분자의 실제 등장 횟수(2)보다 크기 때문에, 세 번째 구분자를 찾을 수 없어 함수는 문자열 끝까지 잘라낸 결과, 즉 원본 문자열 전체를 그대로 반환하게 됩니다.
정리하면, count 값이 구분자의 총 등장 횟수보다 크거나 같으면 SUBSTRING_INDEX() 함수는 전체 문자열을 그대로 반환한다는 점을 기억하시기 바랍니다. 이러한 특성은 데이터 파싱 시 예상치 못한 결과를 방지하기 위해 반드시 알아두어야 할 중요한 동작 방식입니다.