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

MySQL REGEXP로 '99S', '50K' 같은 숫자+문자 조합 레코드 조회하는 방법

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]$처럼 중괄호 반복 문법을 활용할 수도 있습니다. 실무에서 데이터 검증이나 특정 형식의 코드 조회 작업에 유용하게 활용해 보시기 바랍니다.