이메일 주소 중 숫자 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를 활용하면 복잡한 문자열 패턴 매칭도 간단한 쿼리 하나로 처리할 수 있습니다.