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

MySQL REGEXP를 활용해 숫자 5자리로 시작하는 이메일 주소 조회하기

이메일 주소 중 숫자 5자리로 시작하는 값만 조회하고 싶다면 MySQL의 REGEXP 연산자를 활용하는 것이 가장 간단한 방법입니다. 정규 표현식 패턴을 사용하면 문자열의 시작 부분이 특정 조건에 맞는지 손쉽게 확인할 수 있습니다.

기본 쿼리 문법

select * from yourTableName where yourColumnName regexp "^[0-9]{5}";

여기서 사용된 정규식 패턴의 의미는 다음과 같습니다.

  • ^ : 문자열의 시작을 의미합니다.
  • [0-9] : 0부터 9까지의 숫자 한 글자를 나타냅니다.
  • {5} : 앞의 패턴이 정확히 5번 반복되어야 함을 지정합니다.

예제 테이블 생성

먼저 실습에 사용할 테이블을 생성해 보겠습니다.

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

샘플 데이터 삽입

INSERT 명령어를 사용해 몇 개의 이메일 주소를 입력합니다.

mysql> insert into DemoTable values('6574John@gmail.com');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('Carol23456@gmail.com');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values('98989Chris_45678@gmail.com');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values('Mike12@gmail.com');
Query OK, 1 row affected (0.43 sec)
mysql> insert into DemoTable values('56453Adam@gmail.com');
Query OK, 1 row affected (0.20 sec)

전체 데이터 확인

SELECT 문으로 테이블에 저장된 모든 레코드를 조회해 보겠습니다.

mysql> select *from DemoTable;

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

+----------------------------+
| UserEmailAddress           |
+----------------------------+
| 6574John@gmail.com         |
| Carol23456@gmail.com       |
| 98989Chris_45678@gmail.com |
| Mike12@gmail.com           |
| 56453Adam@gmail.com        |
+----------------------------+
5 rows in set (0.00 sec)

숫자 5자리로 시작하는 이메일 조회

이제 REGEXP와 정규식 패턴 "^[0-9]{5}"를 사용하여 이메일 주소가 숫자 5자리로 시작하는 레코드만 선택하는 쿼리입니다.

mysql> select *from DemoTable where UserEmailAddress regexp "^[0-9]{5}";

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

+----------------------------+
| UserEmailAddress           |
+----------------------------+
| 98989Chris_45678@gmail.com |
| 56453Adam@gmail.com        |
+----------------------------+
2 rows in set (0.00 sec)

결과 분석

쿼리 결과를 보면 다음 두 가지 경우가 필터링된 것을 알 수 있습니다.

  • '6574John@gmail.com' : 숫자가 4자리(6574)뿐이므로 제외되었습니다.
  • 'Carol23456@gmail.com', 'Mike12@gmail.com' : 문자로 시작하므로 제외되었습니다.

반면 '98989Chris_45678@gmail.com'과 '56453Adam@gmail.com'은 정확히 숫자 5자리로 시작하기 때문에 정상적으로 조회되었습니다. 이처럼 REGEXP를 활용하면 복잡한 문자열 패턴 매칭도 간단한 쿼리 하나로 처리할 수 있습니다.