학습용 기출·복원자료 분류 확인SQLD · 2025년 58회 SQL 기본 및 활용 · 42번
다음 고객 테이블에서 영문자·숫자·언더바로만 구성된 아이디와 도메인을 사용하고 .com으로 끝나는 이메일을 찾는 SQL로 가장 올바른 것은?
DBMS: Oracle
고객ID
이메일
100
dev_1@oracle.com
200
master@test
300
admin.user@db.com
400
info@korea.com
1
SELECT COUNT(*) FROM 고객 WHERE REGEXP_LIKE(이메일, '^\w+@\w+\.com$');
정답 근거정규표현식에서 ^는 시작, $는 끝을 의미하며, \w+는 한 글자 이상의 문자, \.은 실제 마침표를 의미하므로 1번이 정확한 패턴이다. 따라서 1번 보기 ‘SELECT COUNT(*) FROM 고객 WHERE REGEXP_LIKE(이메일, '^\w+@\w+\.com$');’의 적용 여부를 문제 조건과 대조해야 한다.
2
SELECT COUNT(*) FROM 고객 WHERE REGEXP_LIKE(이메일, '^\w*@\w*.com$');
오답 이유‘SELECT COUNT(*) FROM 고객 WHERE REGEXP_LIKE(이메일, '^\w*@\w*.com$');’ 구문은 ‘SELECT COUNT(*) FROM 고객 WHERE REGEXP_LIKE(이메일, '^\w+@\w+\.com$');’과 실행 결과나 적용 조건이 다르다. 정규표현식에서 ^는 시작, $는 끝을 의미하며, \w+는 한 글자 이상의 문자, \.은 실제 마침표를 의미하므로 1번이 정확한 패턴이다. 따라서 2번 보기 ‘SELECT COUNT(*) FROM 고객 WHERE REGEXP_LIKE(이메일, '^\w*@\w*.com$');’의 적용 여부를 문제 조건과 대조해야 한다.
3
SELECT COUNT(*) FROM 고객 WHERE REGEXP_LIKE(이메일, '.*@.*\.com');
오답 이유‘SELECT COUNT(*) FROM 고객 WHERE REGEXP_LIKE(이메일, '.*@.*\.com');’ 구문은 ‘SELECT COUNT(*) FROM 고객 WHERE REGEXP_LIKE(이메일, '^\w+@\w+\.com$');’과 실행 결과나 적용 조건이 다르다. 정규표현식에서 ^는 시작, $는 끝을 의미하며, \w+는 한 글자 이상의 문자, \.은 실제 마침표를 의미하므로 1번이 정확한 패턴이다. 따라서 3번 보기 ‘SELECT COUNT(*) FROM 고객 WHERE REGEXP_LIKE(이메일, '.*@.*\.com');’의 적용 여부를 문제 조건과 대조해야 한다.
4
SELECT COUNT(*) FROM 고객 WHERE REGEXP_LIKE(이메일, '[a-zA-Z0-9]@[a-zA-Z0-9].com');
오답 이유‘SELECT COUNT(*) FROM 고객 WHERE REGEXP_LIKE(이메일, '[a-zA-Z0-9]@[a-zA-Z0-9].com');’ 구문은 ‘SELECT COUNT(*) FROM 고객 WHERE REGEXP_LIKE(이메일, '^\w+@\w+\.com$');’과 실행 결과나 적용 조건이 다르다. 정규표현식에서 ^는 시작, $는 끝을 의미하며, \w+는 한 글자 이상의 문자, \.은 실제 마침표를 의미하므로 1번이 정확한 패턴이다. 따라서 4번 보기 ‘SELECT COUNT(*) FROM 고객 WHERE REGEXP_LIKE(이메일, '[a-zA-Z0-9]@[a-zA-Z0-9].com');’의 적용 여부를 문제 조건과 대조해야 한다.
ANSWER & EXPLANATION
정답 1번
핵심 판단은 1번 ‘SELECT COUNT(*) FROM 고객 WHERE REGEXP_LIKE(이메일, '^\w+@\w+\.com$');’입니다. 정규표현식에서 ^는 시작, $는 끝을 의미하며, \w+는 한 글자 이상의 문자, \.은 실제 마침표를 의미하므로 1번이 정확한 패턴이다.