오늘도 문제를 푸는데 새로운 함수가 있어서 가지고 왔다.
내가 찾는 메일은 3가지의 조건에 부합해야 한다.
1. 접두사의 첫번째 문자는 소문자 또는 대문자로 시작할 것
2. 접두사에서 다른 문자들은 '_,'.','-'를 포함할 수 있음.
3. domain은 @leetcode.com으로 끝나야 함.
사실, 테이블에서 값을 불러오는건 전혀 문제가 되지 않는데,
중요한 건 도대체 이걸 어떻게 찾아야하는 것이느냐였다.
물론, rigt(a,5)와 같은 방식으로 @leetcode.com은 찾을 수 있지만
앞에 있는 접두사 조건들은 도대체 어떻게 해야 할지 몰랐다.
REGEXP(Regular Expression) 정규표현식 : SQL에서 문자열이 특정 패턴을 만족하는지 검사할 때 사용되는 함수
^ : 문자열의 시작을 의미
^[a-z] : 문자열의 시작이 소문자 a~z까지 가능
^[a-zA-Z] : 문자열의 시작이 소문자 a~z, 대문자 A~Z까지 가능
^[a-zA-Z0-9] : 문자열의 시작이 소문자 a~z, 대문자 A~Z까지 가능, 숫자 0~9까지 가능
따라서 조건들을 맞춰보면 아래와 같다.
1. 접두사의 첫번째 문자는 소문자 또는 대문자로 시작할 것
WHERE email '^[a-zA-Z]'
2. 접두사에서 다른 문자들은 '_,'.','-'를 포함할 수 있음.
WHERE email '^ [a-zA-Z] [a-zA-Z0-9_.-]*'
3. domain은 @leetcode.com으로 끝나야 함.
WHERE email '^ [a-zA-Z] [a-zA-Z0-9_.-]*@leetcode\.com$'
문자의 반복은 *로 표현 (시작은 1번 조건에 맞게, 이후 @ 나오기 전까지는 다음 조건의 반복)
문자의 끝은 $로 표현
'.'은 정규표현식에서 모든 단일문자를 의미하는 특수문자이므로, .을 정확히 매칭하기 위해 '\.'와 같이 붙여서 사용해야 함.
정답은
'직무강화 > SQL' 카테고리의 다른 글
[수강후기] SQL 데이터 분석캠프 33기 데이터리안 (2) | 2024.09.27 |
---|---|
RFM 고객 세분화분석이란? (데이터리안 필수미션!) (4) | 2024.09.10 |
SQL 학습 GROUP_CONCAT! 엑셀 함수를 SQL에서도. (0) | 2024.08.31 |
SQL 학습 10일차, Querie Quality and Percentage (CASE WHEN, AVG) (1) | 2024.08.29 |
SQL 학습 9일차. User Activity for the past 30days (DATE_SUB, DATE_ADD) (1) | 2024.08.26 |