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

MySQL WHERE... OR 쿼리의 스마트한 대안: REGEXP 연산자 활용법

MySQL에서 OR 조건을 대체하는 REGEXP 방식

MySQL에서 여러 개의 OR 조건이 포함된 WHERE 절은 코드가 길어지고 가독성이 떨어질 수 있습니다. 이럴 때 유용한 대안이 바로 REGEXP(정규 표현식)입니다. REGEXP를 사용하면 복잡한 OR 조건을 하나의 패턴으로 간결하게 처리할 수 있습니다.

1. 테스트용 테이블 생성하기

먼저 예제에 사용할 테이블을 생성합니다.

mysql> create table DemoTable684(EmployeeInformation text);
Query OK, 0 rows affected (0.68 sec)

2. 샘플 데이터 삽입하기

INSERT 명령어를 사용해 몇 개의 레코드를 추가합니다.

mysql> insert into DemoTable684 values('John 21 Google');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable684 values('Carol 23 Amazon');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable684 values('Carol 26 Flipkart');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable684 values('David 29 Microsoft');
Query OK, 1 row affected (0.18 sec)

3. 전체 레코드 조회하기

SELECT 문으로 테이블의 모든 데이터를 확인합니다.

mysql> select *from DemoTable684;

실행 결과는 다음과 같습니다.

+---------------------+
| EmployeeInformation |
+---------------------+
| John 21 Google      |
| Carol 23 Amazon     |
| Carol 26 Flipkart   |
| David 29 Microsoft  |
+---------------------+
4 rows in set (0.00 sec)

4. REGEXP로 OR 조건 구현하기

아래 쿼리는 'David', '29', 'Microsoft' 중 하나라도 포함된 행을 찾는 조건입니다. 기존에 WHERE ... OR ... OR ... 형태로 작성해야 했던 조건을 정규 표현식 패턴 하나로 처리할 수 있습니다.

mysql> select *from DemoTable684 where EmployeeInformation REGEXP '(David|29|Microsoft)';

실행 결과는 다음과 같습니다.

+---------------------+
| EmployeeInformation |
+---------------------+
| David 29 Microsoft  |
+---------------------+
1 row in set (0.00 sec)

정리

REGEXP의 파이프(|) 기호는 '또는(OR)'을 의미하므로, 여러 키워드 중 하나라도 일치하는 행을 손쉽게 검색할 수 있습니다. 다만 REGEXP는 인덱스를 제대로 활용하지 못할 수 있으므로, 대량의 데이터를 다룰 때는 성능을 반드시 고려해야 합니다. 소규모 데이터나 간단한 패턴 매칭에는 REGEXP가 OR 조건보다 훨씬 깔끔하고 효율적인 선택이 될 수 있습니다.