MySQL SUBSTRING_INDEX() 함수가 동일한 문자열을 출력으로 반환하는 경우
MySQL의 SUBSTRING_INDEX() 함수는 'count' 인수의 값이 구분자(delimiter)가 문자열에 나타나는 총 횟수보다 클 경우, 입력된 문자열을 그대로 출력으로 반환합니다.
다음 예시를 통해 이 동작을 확인할 수 있습니다:
mysql> SELECT SUBSTRING_INDEX('www.google.co.in', '.', 4);
+---------------------------------------------+
| SUBSTRING_INDEX('www.google.co.in', '.', 4) |
+---------------------------------------------+
| www.google.co.in |
+---------------------------------------------+
1 row in set (0.00 sec)위 쿼리가 원본 문자열을 그대로 반환하는 이유는, count 값인 4가 인수로 제공된 구분자 '.'의 총 발생 횟수(3회)보다 크기 때문입니다. 구분자가 더 이상 존재하지 않으면 함수는 남은 전체 문자열을 그대로 돌려줍니다.
SUBSTRING_INDEX() 함수의 기본 동작
SUBSTRING_INDEX(str, delim, count) 함수는 지정한 구분자를 기준으로 count번째 등장 위치 이전까지의 부분 문자열을 반환합니다. count가 양수이면 문자열의 왼쪽(앞)부터, 음수이면 오른쪽(뒤)부터 계산합니다.
예를 들어 다음과 같은 결과를 얻을 수 있습니다:
mysql> SELECT SUBSTRING_INDEX('www.google.co.in', '.', 2); -- 결과: www.google
mysql> SELECT SUBSTRING_INDEX('www.google.co.in', '.', -2); -- 결과: google.co.in따라서 실무에서 이 함수를 사용할 때는 count 값이 구분자의 실제 개수와 일치하거나 작도록 설정해야 의도한 부분 문자열을 정확히 추출할 수 있습니다.