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

MySQL INSTR() 함수와 LIKE 연산자의 유사성 이해하기

MySQL에서는 INSTR() 함수LIKE 연산자를 모두 사용하여 특정 패턴을 검색하거나 일치시킬 수 있으며, 두 방법은 동일한 결과를 반환합니다. 아래의 'Student' 테이블 예제를 통해 이를 쉽게 확인할 수 있습니다.

예제: INSTR() 함수로 문자열 검색하기

'Student' 테이블에서 이름에 'av'가 포함된 학생을 검색한다고 가정해 보겠습니다. 먼저 INSTR() 함수를 사용하는 방법은 다음과 같습니다.

mysql> Select Name from student where INSTR(name, 'av') > 0;
+--------+
| Name   |
+--------+
| Gaurav |
| Aarav  |
| Gaurav |
+--------+
3 rows in set (0.00 sec)

INSTR() 함수는 첫 번째 인자로 지정된 문자열(여기서는 name 컬럼) 내에서 두 번째 인자로 주어진 부분 문자열('av')이 처음 나타나는 위치를 반환합니다. 해당 문자열이 존재하지 않으면 0을 반환하므로, INSTR(name, 'av') > 0 조건은 이름에 'av'가 포함된 모든 행을 찾아냅니다.

예제: LIKE 연산자로 동일한 검색 수행하기

이번에는 같은 조건의 검색을 LIKE 연산자를 사용하여 수행해 보겠습니다.

mysql> Select Name from student where Name LIKE '%av%';
+--------+
| Name   |
+--------+
| Gaurav |
| Aarav  |
| Gaurav |
+--------+
3 rows in set (0.00 sec)

LIKE 연산자는 와일드카드 문자인 %(임의의 길이의 문자열)와 함께 사용되어, 이름 어느 위치든 'av'가 포함된 행을 매칭합니다.

두 방식의 결과 비교

위의 두 쿼리는 완전히 동일한 결과를 반환합니다. 즉, 단순히 특정 문자열의 포함 여부만 확인하는 경우라면 INSTR() 함수와 LIKE 연산자 중 어느 것을 사용해도 무방합니다.

다만 실무에서는 상황에 따라 선택 기준이 달라질 수 있습니다. LIKE는 패턴 매칭에 직관적이고 가독성이 좋은 반면, INSTR()은 부분 문자열의 위치 값 자체가 필요할 때 유용합니다. 또한 인덱스 활용 측면에서도 선두 와일드카드(%av%)를 사용하는 LIKE 쿼리는 인덱스를 효율적으로 사용하기 어려우므로, 대용량 데이터에서는 성능 차이를 고려하는 것이 좋습니다.