[SQL#126 Find Users With Valid E-Mails]

Gi Woon Lee·2024년 9월 14일

SQL

목록 보기
20/33

TIL (Today I Learned): SQL에서 유효한 이메일 찾기 - 정규 표현식 활용

문제 이해

  • 테이블: Users
    • 열: user_id, name, mail
    • user_id는 Primary Key이며, 웹사이트 로그인 정보를 가지고 있는 테이블입니다.
    • 몇몇 이메일은 유효하지 않은 경우가 존재함.

문제 요구 사항

  • 유효한 이메일을 찾는 SQL 쿼리를 작성하라.
  • 유효한 이메일 조건:
    1. 접두사(Prefix): 문자(대소문자), 숫자, 밑줄 _, 점 ., 또는 하이픈 -을 포함할 수 있다. 접두사는 반드시 문자로 시작해야 한다.
    2. 도메인(Domain): 반드시 @leetcode.com으로 끝나야 한다.

입력 예시

Users 테이블:

+---------+-----------+-------------------------+
| user_id | name      | mail                    |
+---------+-----------+-------------------------+
| 1       | Winston   | winston@leetcode.com    |
| 2       | Jonathan  | jonathanisgreat         |
| 3       | Annabelle | bella-@leetcode.com     |
| 4       | Sally     | sally.come@leetcode.com |
| 5       | Marwan    | quarz#2020@leetcode.com |
| 6       | David     | david69@gmail.com       |
| 7       | Shapiro   | .shapo@leetcode.com     |
+---------+-----------+-------------------------+

출력 예시:

+---------+-----------+-------------------------+
| user_id | name      | mail                    |
+---------+-----------+-------------------------+
| 1       | Winston   | winston@leetcode.com    |
| 3       | Annabelle | bella-@leetcode.com     |
| 4       | Sally     | sally.come@leetcode.com |
+---------+-----------+-------------------------+

문제 해결 전략

  • 정규 표현식(REGEXP)를 사용하여 유효한 이메일을 필터링.
  • 접두사 규칙을 만족하는 문자열을 검증하고, 정확히 @leetcode.com으로 끝나는지 확인.

정답 코드

SELECT *
FROM Users
WHERE mail REGEXP '^[a-zA-Z][a-zA-Z0-9_.-]*@leetcode[.]com$';

중요 포인트

  1. $로 검증 마지막을 닫아야 함:

    • REGEXP 사용 시, 패턴 끝에 $를 추가하여 문자열이 그 위치에서 끝나도록 강제함.
    • 이 부분이 생략되면, 예를 들어 @leetcode.comFILTER 같은 형식을 걸러내지 못하므로 유효하지 않은 이메일이 포함될 수 있음.
  2. []는 단일 문자 단위:

    • [a-zA-Z0-9_.-]는 해당 문자 중 하나만을 의미.
    • 문자 집합 뒤에 *를 사용해 0번 이상 반복될 수 있도록 해야 복수의 문자를 허용.

배운 점

  • 정규 표현식의 정확한 사용: 정규 표현식에서 ^는 문자열의 시작, $는 문자열의 끝을 검증하는 데 필수적이다. 이를 통해 문자열이 특정 형식으로 끝나는지 정확하게 판단할 수 있음.
  • 복수 문자 검증: 문자 집합 []는 단일 문자 검증에 사용되며, 반복을 나타내려면 *, +, 또는 {n} 등의 반복자를 사용해야 함.
  • 유효성 검사 강화: 이메일 형식과 같은 데이터 유효성 검증을 통해 데이터의 정확성과 신뢰성을 높일 수 있음.

정규 표현식을 활용해 유효한 데이터를 필터링하고, 특정 형식의 문자열을 효과적으로 처리할 수 있는 기술을 익힐 수 있었습니다.

0개의 댓글