Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

문자열에 부분 문자열이 두 번 이상 포함된 경우 MySQL LOCATE() 함수는 어떻게 동작할까?

LOCATE() 함수의 인수로 전달된 문자열에 부분 문자열이 두 번 이상 포함되어 있는 경우, MySQL은 해당 부분 문자열이 처음 등장하는 위치를 반환합니다.

예시

mysql> Select LOCATE('good','Ram is a good boy. Is Ram a good boy?') As Result;
+--------+
| Result |
+--------+
|     10 |
+--------+
1 row in set (0.00 sec)

위 예시를 보면 부분 문자열 'good'은 문자열 안에 총 두 번 등장합니다. 첫 번째 위치는 10번째이며, 두 번째 위치는 29번째입니다. 그럼에도 불구하고 MySQL LOCATE() 함수는 부분 문자열이 몇 번이든 반복되어 나타나더라도 항상 가장 먼저 발견된 위치만 반환한다는 점을 확인할 수 있습니다.

추가 팁: 특정 위치부터 검색하기

만약 첫 번째 위치가 아닌 다른 위치부터 검색하고 싶다면, LOCATE() 함수에 세 번째 인수로 검색 시작 위치를 지정하면 됩니다.

mysql> Select LOCATE('good','Ram is a good boy. Is Ram a good boy?', 11) As Result;
+--------+
| Result |
+--------+
|     29 |
+--------+
1 row in set (0.00 sec)

위와 같이 시작 위치를 11로 지정하면 첫 번째 'good'을 건너뛰고 두 번째 'good'의 위치인 29를 반환받을 수 있습니다. 이 기능을 활용하면 문자열 내에서 부분 문자열이 등장하는 모든 위치를 순차적으로 찾아내는 것도 가능합니다.