알다시피 두 함수 모두 제공된 인수에서 문자열을 검색하는 데 사용되지만 다음과 같이 두 함수 사이에 몇 가지 중요한 차이점이 있습니다.
- FIND_IN_SET() 함수는 쉼표로 구분된 하위 문자열을 포함하는 문자열 자체인 문자열 목록을 사용합니다. 반면, INSTR() 함수는 하위 문자열이 있는 경우 처음 나타나는 위치를 찾는 문자열을 포함합니다.
- 정수의 경우 INSTR() 함수보다 FIND_IN_SET()이 훨씬 적합합니다. 다음 예를 통해 이해할 수 있습니다.
예시
mysql> Select IF(INSTR('10,11,12,13',2) > 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)
위 예제의 결과 집합에서 INSTR() 함수는 인수에 문자열이 없기 때문에 1이라도 2를 반환함을 알 수 있습니다. 하지만 FIND_IN_SET() 함수는 정답인 0을 반환합니다.