MySQL REGEXP로 세미콜론이 여러 개 포함된 문자열 찾기
MySQL에서는 REGEXP 연산자를 활용하면 특정 패턴이 포함된 데이터를 손쉽게 검색할 수 있습니다. 이번 글에서는 세미콜론(;)이 3개 포함된 문자열을 찾는 방법을 실제 예제와 함께 단계별로 살펴보겠습니다.
1. 테이블 생성하기
먼저 테스트에 사용할 테이블을 생성합니다.
mysql> create table DemoTable
(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY ,
Title text
);
Query OK, 0 rows affected (0.88 sec)
2. 샘플 데이터 삽입하기
INSERT 문을 사용해 세미콜론이 각각 다르게 포함된 레코드를 입력합니다.
mysql> insert into DemoTable(Title) values('This is; a; MySQL;Tutorial');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable(Title) values('Java is; an;Object Oriented');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable(Title) values('MongoDB ; is;a; database');
Query OK, 1 row affected (0.12 sec)3. 전체 데이터 조회하기
SELECT 문으로 테이블에 저장된 모든 레코드를 확인합니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+----+-----------------------------+
| Id | Title |
+----+-----------------------------+
| 1 | This is; a; MySQL;Tutorial |
| 2 | Java is; an;Object Oriented |
| 3 | MongoDB ; is;a; database |
+----+-----------------------------+
3 rows in set (0.00 sec)
4. REGEXP로 세미콜론 3개 찾기
세미콜론이 3개 포함된 문자열을 찾으려면 아래와 같은 정규식 패턴을 사용합니다.
mysql> select *from DemoTable where Title REGEXP '(.*;){3}';여기서 (.*;){3}은 '임의의 문자열 뒤에 세미콜론이 오는 패턴'이 3번 반복된다는 의미입니다. 실행 결과는 다음과 같습니다.
+----+----------------------------+
| Id | Title |
+----+----------------------------+
| 1 | This is; a; MySQL;Tutorial |
| 3 | MongoDB ; is;a; database |
+----+----------------------------+
2 rows in set (0.00 sec)
결과 분석 및 응용
결과를 보면 Id가 1번과 3번인 레코드만 반환되었습니다. 2번 레코드(Java is; an;Object Oriented)에는 세미콜론이 2개뿐이므로 조건에서 제외된 것입니다.
만약 원하는 개수(N개)의 세미콜론을 찾고 싶다면 중괄호 안의 숫자만 바꾸면 됩니다. 예를 들어 세미콜론이 5개인 문자열을 찾으려면 (.*;){5}를 사용하면 됩니다. 또한 (.*;){3}처럼 쉼표를 추가해 작성하면 세미콜론이 최소 3개 이상 포함된 모든 문자열을 검색할 수 있어 더욱 유연하게 활용할 수 있습니다.