Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

MySQL LOCATE()와 FIND_IN_SET() 함수의 차이점은 무엇입니까?

<시간/>

알다시피, 두 함수 모두 제공된 인수에서 문자열을 검색하는 데 사용되지만 다음과 같이 두 함수 사이에 몇 가지 중요한 차이점이 있습니다.

  • FIND_IN_SET() 함수는 쉼표로 구분된 하위 문자열을 포함하는 문자열 자체인 문자열 목록을 사용합니다. 반면, LOCATE() 함수는 하위 문자열이 있는 경우 처음 나타나는 위치를 찾는 문자열을 포함합니다.
  • LOCATE() 함수에서 위치에 대한 선택적 인수를 제공하여 검색 시작점을 관리할 수 있습니다. 반면, FIND_IN_SET() 함수의 경우 MySQL은 이러한 종류의 유연성을 제공하지 않으며 검색은 기본적으로 첫 번째 문자열부터 시작합니다.
  • 정수의 경우 FIND_IN_SET()이 LOCATE() 함수보다 훨씬 적합합니다. 다음 예를 통해 이해할 수 있습니다.

예시

mysql> Select IF(LOCATE(2,'10,11,12,13') > 0,1,0) As result;
+--------+
| result |
+--------+
|      1 |
+--------+
1 row in set (0.05 sec)

mysql> Select IF(FIND_IN_SET(2,'10,11,12,13') > 0,1,0)As Result;
+--------+
| Result |
+--------+
|      0 |
+--------+
1 row in set (0.00 sec)

위 예제의 결과 집합에서 LOCATE() 함수는 인수에 문자열이 없기 때문에 2라도 1을 반환함을 알 수 있습니다. 하지만 FIND_IN_SET() 함수는 정답인 0을 반환합니다.