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

MySQL REGEXP로 특정 패턴 검색하는 방법 완벽 가이드

정규 표현식(REGEXP)으로 패턴 검색하기

MySQL에서 특정 패턴과 일치하는 데이터를 검색하려면 REGEXP(정규 표현식) 연산자를 사용하면 됩니다. 먼저 예제에 사용할 테이블을 생성해 보겠습니다.

mysql> create table DemoTable
    (
    UserId varchar(100)
    );
Query OK, 0 rows affected (1.28 sec)

1. 샘플 데이터 삽입

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

mysql> insert into DemoTable values('User-123-G');
Query OK, 1 row affected (0.14 sec)

mysql> insert into DemoTable values('Us-453-GO');
Query OK, 1 row affected (0.08 sec)

mysql> insert into DemoTable values('TRUE-908-K');
Query OK, 1 row affected (0.20 sec)

2. 전체 레코드 조회

SELECT 문으로 저장된 모든 레코드를 확인합니다.

mysql> select *from DemoTable;

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

+------------+
| UserId     |
+------------+
| User-123-G |
| Us-453-GO  |
| TRUE-908-K |
+------------+
3 rows in set (0.00 sec)

3. REGEXP 쿼리로 특정 패턴 검색

다음은 MySQL에서 특정 패턴을 기준으로 검색하는 쿼리입니다. 여기서는 "영숫자 4개 - 영숫자 3개 - 영숫자 1개" 형태의 패턴을 지정했습니다.

참고: '-'는 실제 하이픈(-) 문자를 의미합니다.

mysql> select *from DemoTable where UserId regexp '^[[:alnum:]]{4}-[[:alnum:]]{3}-[[:alnum:]]{1}$';

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

+------------+
| UserId     |
+------------+
| User-123-G |
| TRUE-908-K |
+------------+
2 rows in set (0.12 sec)

정규 표현식 패턴 해설

위 쿼리에 사용된 각 요소의 의미는 다음과 같습니다.

  • ^ : 문자열의 시작을 의미합니다.
  • [[:alnum:]] : 알파벳 또는 숫자 중 한 글자와 일치하는 POSIX 문자 클래스입니다.
  • {4}, {3}, {1} : 앞의 문자 클래스가 각각 4번, 3번, 1번 반복되어야 함을 나타냅니다.
  • - : 구분자인 하이픈 문자 그대로를 의미합니다.
  • $ : 문자열의 끝을 의미합니다.

따라서 이 쿼리는 "4글자-3글자-1글자" 구조를 가진 UserId만 반환합니다. 그 결과 세 개의 레코드 중 'User-123-G'와 'TRUE-908-K' 두 행이 조건에 부합하여 조회된 것입니다. 'Us-453-GO'는 첫 번째 그룹이 2글자뿐이라 패턴에 맞지 않아 제외되었습니다.

마무리

단순한 부분 문자열 검색에는 LIKE 연산자를 사용할 수 있지만, 복잡하고 규칙적인 형식(예: 전화번호, 제품 코드, ID 체계 등)을 검증하거나 검색할 때는 REGEXP가 훨씬 강력하고 유연한 선택입니다. 실무에서도 데이터 형식 유효성 확인용 필터링에 정규 표현식이 널리 활용됩니다.