MySQL에서 유효하지 않은 이메일 주소 조회하기
MySQL 테이블에 저장된 데이터 중 형식이 올바르지 않은 이메일 주소를 찾아야 할 때가 있습니다. 이럴 때는 LIKE 연산자와 함께 NOT LIKE 절을 사용하면 간단하게 해결할 수 있습니다.
기본 문법
잘못된 이메일 주소를 찾으려면 아래와 같은 문법을 사용합니다.
SELECT yourColumnName FROM yourTableName
WHERE yourColumnName NOT LIKE '%_@_%._%';
위 패턴은 '문자@문자.문자'의 기본적인 이메일 형식을 검사합니다. 즉, @ 기호가 없거나 도메인의 마침표(.)가 누락된 이메일 주소가 모두 조회됩니다.
예제 테이블 생성
실제 동작을 확인하기 위해 먼저 예제 테이블을 만들어 보겠습니다.
mysql> create table FindInvalidEmailAddressDemo
-> (
-> Id int NOT NULL AUTO_INCREMENT,
-> Name varchar(20),
-> EmailAddress varchar(40),
-> PRIMARY KEY(Id)
-> );
Query OK, 0 rows affected (0.75 sec)
샘플 데이터 삽입 및 확인
이제 INSERT 명령으로 레코드를 추가합니다. 예제를 위해 의도적으로 잘못된 형식의 이메일 주소도 함께 넣었습니다.
mysql> select *from FindInvalidEmailAddressDemo;
조회 결과는 다음과 같습니다.
+----+-------+-------------------+
| Id | Name | EmailAddress |
+----+-------+-------------------+
| 1 | John | John12@gmail.com |
| 2 | Carol | Carol@hotmail.com |
| 3 | Mike | 123Mike@gmailcom |
| 4 | Bob | Bob909hotmail.com |
| 5 | David | David@gmail.com |
+----+-------+-------------------+
5 rows in set (0.00 sec)
위 결과에서 3번(Mike)과 4번(Bob)의 이메일이 형식에 맞지 않습니다. Mike의 주소에는 도메인 마침표가 없고, Bob의 주소에는 @ 기호가 빠져 있습니다.
잘못된 이메일 주소 조회 쿼리 실행
다음 쿼리를 실행하면 유효하지 않은 이메일 주소만 추출할 수 있습니다.
mysql> select EmailAddress from FindInvalidEmailAddressDemo
-> where EmailAddress NOT LIKE '%_@_%._%';
실행 결과, 잘못된 이메일 주소 목록이 출력됩니다.
+-------------------+
| EmailAddress |
+-------------------+
| 123Mike@gmailcom |
| Bob909hotmail.com |
+-------------------+
2 rows in set (0.00 sec)
정리
NOT LIKE '%_@_%._%' 패턴을 활용하면 별도의 외부 도구나 복잡한 정규식 없이도 MySQL만으로 기본적인 이메일 형식 오류를 손쉽게 걸러낼 수 있습니다. 다만 이 방법은 단순 패턴 검사이므로, 더 엄격한 유효성 검사가 필요하다면 애플리케이션 단계에서 정규식 기반 검증을 함께 적용하는 것이 좋습니다.