MySQL의 LOCATE() 함수를 사용하면 문자열 안에서 특정 부분 문자열이 처음 나타나는 위치를 손쉽게 찾을 수 있습니다. 기본 문법은 다음과 같습니다.
문법
LOCATE(Substring, String)
여기서 Substring은 위치를 찾고자 하는 부분 문자열이며, String은 해당 부분 문자열을 검색할 대상 문자열입니다.
LOCATE() 함수를 호출할 때는 검색할 부분 문자열과 검색 대상이 되는 문자열, 이 두 가지 인수를 반드시 함께 전달해야 합니다.
예제
mysql> Select LOCATE('Good','RAM IS A GOOD BOY')As Result;
+--------+
| Result |
+--------+
| 10 |
+--------+
1 row in set (0.00 sec)위 예제에서 결과값이 10으로 반환된 이유는, 부분 문자열 'Good'이 문자열 'RAM IS A GOOD BOY'에서 10번째 위치부터 처음 나타나기 때문입니다. 참고로 LOCATE() 함수는 데이터베이스의 기본 콜레이션에 따라 일반적으로 대소문자를 구분하지 않으므로, 소문자가 섞인 'Good'으로 검색했음에도 대문자 'GOOD'을 정상적으로 찾아낸 것을 확인할 수 있습니다.
검색 시작 위치 지정하기
또한 세 번째 인수로 position(위치) 값을 추가하면 검색을 시작할 지점을 직접 지정할 수 있습니다. position 인수를 포함한 LOCATE() 함수의 문법은 다음과 같습니다.
LOCATE(Substring, String, position)
예제
mysql> Select LOCATE('Good','Good, RAM IS A GOOD BOY')As Result;
+--------+
| Result |
+--------+
| 1 |
+--------+
1 row in set (0.00 sec)
mysql> Select LOCATE('Good','Good, RAM IS A GOOD BOY',5)As Result;
+--------+
| Result |
+--------+
| 16 |
+--------+
1 row in set (0.00 sec)위 두 결과를 비교해 보면 position 인수의 역할을 명확하게 알 수 있습니다. position 인수를 생략하면 기본적으로 문자열의 1번째 위치부터 검색을 시작하지만, 예제처럼 '5'를 지정하면 5번째 위치부터 검색을 진행합니다. 그 결과 동일한 문자열에서도 'Good'의 위치가 각각 1과 16으로 다르게 반환되는 것입니다.