MySQL에서 '99S', '10M'처럼 숫자 두 개 + 대문자 한 개 형태로 구성된 레코드를 조회하고 싶다면, 가장 간단한 방법은 REGEXP(정규 표현식)를 활용하는 것입니다.
이 글에서는 실제 예제를 통해 숫자와 문자가 결합된 특정 패턴의 데이터를 손쉽게 필터링하는 방법을 단계별로 살펴보겠습니다.
1. 예제 테이블 생성
먼저 데모용 테이블을 생성합니다.
mysql> create table DemoTable
(
Id varchar(50)
);
Query OK, 0 rows affected (0.77 sec)2. 샘플 데이터 삽입
INSERT 명령어를 사용해 다양한 형태의 문자열 데이터를 입력합니다.
mysql> insert into DemoTable values('John123');
Query OK, 1 row affected (0.23 sec)
mysql> insert into DemoTable values('123Chris');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('99Bob');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values('19David');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('99S');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable values('10M');
Query OK, 1 row affected (0.14 sec)3. 전체 레코드 확인
SELECT 문으로 테이블에 저장된 모든 데이터를 조회해 보겠습니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+----------+ | Id | +----------+ | John123 | | 123Chris | | 99Bob | | 19David | | 99S | | 10M | +----------+ 6 rows in set (0.00 sec)
4. REGEXP로 숫자+문자 패턴 조회
이제 핵심인 정규 표현식 쿼리입니다. 아래 쿼리는 숫자 2개 뒤에 대문자 알파벳 1개가 오는 형식(예: 99S, 10M)의 레코드만 추출합니다.
mysql> select *from DemoTable where Id regexp '^[0-9][0-9][A-Z]$';
정규식 패턴의 의미는 다음과 같습니다.
^: 문자열의 시작[0-9][0-9]: 숫자 두 자리[A-Z]: 대문자 알파벳 한 글자$: 문자열의 끝
쿼리 실행 결과는 다음과 같습니다.
+------+ | Id | +------+ | 99S | | 10M | +------+ 2 rows in set (0.00 sec)
마무리
이처럼 MySQL의 REGEXP 연산자를 사용하면 복잡한 문자열 패턴도 간단한 정규식 하나로 손쉽게 필터링할 수 있습니다. 만약 숫자 자릿수를 유연하게 조정하고 싶다면 ^[0-9]{2}[A-Z]$처럼 중괄호 반복 문법을 활용할 수도 있습니다. 실무에서 데이터 검증이나 특정 형식의 코드 조회 작업에 유용하게 활용해 보시기 바랍니다.