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

MySQL에서 LIKE 연산자로 여러 조건의 값을 가진 필드 조회하는 방법

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 조합과 동일한 결과를 반환하며, 조건이 많은 경우 코드를 더 간결하게 유지할 수 있다는 장점이 있습니다.