MySQL에서 테이블의 데이터를 조회할 때는 SELECT 명령어를 사용하며, 원하는 레코드만 골라내기 위해 WHERE 절이라는 조건절을 함께 활용할 수 있습니다.
WHERE 절에 등호(=)를 사용하면 값이 정확히 일치하는 경우를 찾을 때 매우 유용합니다. 예를 들어 tutorial_author = 'Sanjay'처럼 조건을 걸 수 있습니다. 하지만 작성자 이름에 'jay'가 포함된 모든 결과를 필터링해야 하는 상황이라면 어떻게 해야 할까요? 이럴 때 MySQL LIKE 연산자를 WHERE 절과 함께 사용하면 됩니다.
와일드카드 없이 LIKE를 사용하면?
흥미로운 점은, LIKE 연산자를 와일드카드 문자 없이 사용하면 WHERE 절과 결합한 등호(=)와 거의 동일하게 작동한다는 것입니다. 아래 예제를 통해 확인해 보겠습니다.
예제 1: LIKE와 = 의 기본 비교
mysql> Select * from Student Where Name LIKE 'Harshit'; +------+---------+---------+----------+--------------------+ | Id | Name | Address | Subject | year_of_admission | +------+---------+---------+----------+--------------------+ | 15 | Harshit | Delhi | Commerce | 2009 | +------+---------+---------+----------+--------------------+ 1 row in set (0.00 sec) mysql> Select * from Student Where Name = 'Harshit'; +------+---------+---------+----------+--------------------+ | Id | Name | Address | Subject | year_of_admission | +------+---------+---------+----------+--------------------+ | 15 | Harshit | Delhi | Commerce | 2009 | +------+---------+---------+----------+--------------------+ 1 row in set (0.00 sec)
두 쿼리 모두 동일한 결과를 반환하는 것을 볼 수 있습니다.
결정적인 차이점: 후행 공백(Trailing Spaces) 처리
와일드카드 문자인 %(퍼센트)와 _(언더스코어)의 사용 여부 외에도, LIKE와 = 연산자 사이에는 중요한 차이가 하나 더 있습니다.
- = 연산자: 문자열 끝의 공백(후행 공백)을 무시하고 비교합니다.
- LIKE 연산자: 후행 공백을 무시하지 않고 그대로 비교 대상에 포함시킵니다.
즉, 검색 조건 문자열 끝에 불필요한 공백이 포함되어 있으면 두 연산자의 결과가 달라질 수 있습니다. 다음 예제를 살펴보겠습니다.
예제 2: 후행 공백이 있을 때의 차이
mysql> Select * from Student Where Name = 'Harshit '; +------+---------+---------+----------+--------------------+ | Id | Name | Address | Subject | year_of_admission | +------+---------+---------+----------+--------------------+ | 15 | Harshit | Delhi | Commerce | 2009 | +------+---------+---------+----------+--------------------+ 1 row in set (0.00 sec) mysql> Select * from Student Where Name LIKE 'Harshit '; Empty set (0.00 sec)
'Harshit '처럼 이름 뒤에 공백이 붙은 조건으로 검색했을 때, = 연산자는 공백을 무시하고 정상적으로 결과를 반환하지만, LIKE 연산자는 공백까지 포함해 정확히 일치해야 하므로 빈 결과(Empty set)를 반환합니다.
정리
두 연산자를 선택할 때는 다음 사항을 기억하면 좋습니다.
- 부분 일치 검색이 필요하면 LIKE + 와일드카드(% , _)를 사용합니다.
- 정확한 일치 검색이라면 = 연산자가 적합하며, 성능 면에서도 일반적으로 더 유리합니다.
- 입력값에 후행 공백이 섞여 있을 가능성이 있다면, = 과 LIKE의 결과가 달라질 수 있음을 유의해야 합니다.