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

SQL LIKE 연산자와 비교 연산자를 함께 사용해 원하는 문자열 패턴만 조회하는 방법

SQL에서 LIKE 연산자는 문자열 패턴 매칭에 널리 사용되지만, WHERE 절에서 비교 연산자(예: !=, <>, =)와 함께 사용하면 훨씬 더 정교한 조건 검색이 가능합니다. 이 두 연산자를 조합하면 특정 패턴에 일치하면서 동시에 특정 값을 제외해야 하는 경우에 유용하게 활용할 수 있습니다.

LIKE 연산자와 비교 연산자의 조합

예를 들어, 학생 테이블에서 이름이 'v'로 끝나는 학생들을 조회하고 싶지만, 그중에서 특정 이름인 'Gaurav'는 결과에서 제외하고 싶다고 가정해 보겠습니다. 이런 경우 LIKE 연산자만으로는 해결할 수 없으며, 비교 연산자를 함께 사용해야 합니다.

예제 쿼리

mysql> Select * from student where name like '%v' and name != 'gaurav';

위 쿼리의 실행 결과는 다음과 같습니다.

+------+-------+---------+---------+--------------------+
| Id   | Name  | Address | Subject | year_of_admission  |
+------+-------+---------+---------+--------------------+
| 2    | Aarav | Mumbai  | History |               2010 |
+------+-------+---------+---------+--------------------+
1 row in set (0.00 sec)

쿼리 동작 방식 분석

이 쿼리가 어떻게 작동하는지 단계별로 살펴보겠습니다.

1. LIKE '%v' 조건: 와일드카드 '%'는 임의의 문자열을 의미하므로, 이름이 'v'로 끝나는 모든 레코드가 해당됩니다. 예제 데이터에서는 'Aarav'와 'Gaurav'가 이 조건에 일치합니다.

2. name != 'gaurav' 조건: 비교 연산자 !=(같지 않음)를 사용하여 이름이 'gaurav'인 레코드를 제외합니다.

3. AND 연산자: 두 조건이 모두 참인 레코드만 최종 결과에 포함되므로, 'v'로 끝나면서 'Gaurav'가 아닌 'Aarav'만 조회됩니다.

정리

이처럼 LIKE 연산자는 패턴 매칭을 담당하고, 비교 연산자는 세부적인 조건 필터링을 담당합니다. 두 연산자를 AND 또는 OR 논리 연산자로 결합하면 단순 패턴 검색만으로는 불가능한 복잡한 데이터 조회 요구사항을 손쉽게 처리할 수 있습니다. 대소문자 구분 여부는 데이터베이스의 콜레이션(collation) 설정에 따라 달라질 수 있으므로, 실무에서는 이 점도 함께 고려하는 것이 좋습니다.