MySQL에서 하나의 컬럼에 대해 여러 개의 검색 조건을 적용해 데이터를 조회하려면 LIKE 연산자와 OR 연산자를 함께 사용하면 됩니다. 각각의 LIKE 조건을 OR로 연결하면, 여러 패턴 중 하나라도 일치하는 모든 행을 한 번에 가져올 수 있습니다.
기본 문법
여러 값을 가진 필드를 조회하는 기본적인 쿼리 형식은 다음과 같습니다.
SELECT * FROM yourTableName
WHERE yourColumnName LIKE '%문자열1'
OR yourColumnName LIKE '%문자열2'
OR yourColumnName LIKE '%문자열3' ...N;
예제 테이블 생성하기
실제 동작을 이해하기 위해 간단한 테이블을 만들어 보겠습니다. 취미(Hobby) 정보를 저장하는 테이블입니다.
mysql> CREATE TABLE LikeDemo
-> (
-> Hobby VARCHAR(200)
-> );
Query OK, 0 rows affected (1.71 sec)
샘플 데이터 삽입하기
INSERT 명령어를 사용하여 테이블에 여러 개의 레코드를 추가합니다.
mysql> INSERT INTO LikeDemo VALUES('Reading Book');
Query OK, 1 row affected (0.13 sec)
mysql> INSERT INTO LikeDemo VALUES('Playing Cricket Match');
Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO LikeDemo VALUES('Playing Hockey Match');
Query OK, 1 row affected (0.27 sec)
mysql> INSERT INTO LikeDemo VALUES('Reading Novel');
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO LikeDemo VALUES('Swimming');
Query OK, 1 row affected (0.10 sec)SELECT 문으로 전체 레코드를 확인합니다.
mysql> SELECT * FROM LikeDemo;
실행 결과는 다음과 같습니다.
+-----------------------+
| Hobby |
+-----------------------+
| Reading Book |
| Playing Cricket Match |
| Playing Hockey Match |
| Reading Novel |
| Swimming |
+-----------------------+
5 rows in set (0.00 sec)
LIKE + OR로 여러 값 조회하기
이제 'Cricket' 또는 'Reading'이라는 문자열이 포함된 레코드만 조회해 보겠습니다. 두 개의 LIKE 조건을 OR로 연결한 쿼리는 다음과 같습니다.
mysql> SELECT * FROM LikeDemo
-> WHERE Hobby LIKE '%Cricket%' OR Hobby LIKE '%Reading%';
실행 결과는 다음과 같습니다.
+-----------------------+
| Hobby |
+-----------------------+
| Reading Book |
| Playing Cricket Match |
| Reading Novel |
+-----------------------+
3 rows in set (0.00 sec)
참고: REGEXP를 활용한 대안
조건이 많아질 경우 OR 절이 길어져 가독성이 떨어질 수 있습니다. 이럴 때는 REGEXP(또는 RLIKE)를 사용하면 하나의 조건으로 여러 패턴을 처리할 수 있습니다.
mysql> SELECT * FROM LikeDemo
-> WHERE Hobby REGEXP 'Cricket|Reading';
위 쿼리는 앞서 살펴본 LIKE + OR 조합과 동일한 결과를 반환하며, 조건이 많은 경우 코드를 더 간결하게 유지할 수 있다는 장점이 있습니다.