1. 풀이
SELECT title
FROM film
WHERE rating IN ('R', 'NC-17')
AND UPPER(RIGHT(TRIM(title), 1)) NOT IN ('A', 'E', 'I', 'O', 'U');
조건1 : 17세 미만 학생이 혼자와서 대여할 수 없는 영화
조건2 : 제목이 모음으로 끝나지 않는 영화
1-1. TRIM( ) — “양쪽 끝 문자(공백 등)를 정리해주는 함수”
- 문자열의 앞뒤에 있는 불필요한 공백이나 특정 문자를 제거합니다.
(가운데에 있는 문자는 제거하지 않음!)
2. 다른 풀이 : REGEXP 사용
SELECT title
FROM film
WHERE rating IN ('R', 'NC-17')
AND title NOT REGEXP '[AEIOUaeiou]$';
2-1. REGEXP (Regular Expression) — “문자열 패턴 매칭”
- REGEXP(또는 RLIKE)는 정규식(Regular Expression) 을 사용해서 문자열이 특정 패턴에 일치하는지 검사.
column REGEXP 'pattern'
column NOT REGEXP 'pattern'
- REGEXP : 패턴과 일치하면 TRUE
- NOT REGEXP : 패턴과 일치하지 않으면 TRUE
2-2. 주요 정규식 기호 요약
| 기호 | 의미 | 예시 |
| ^ | 문자열의 시작 | 'abc' REGEXP '^a' → ✅ |
| $ | 문자열의 끝 | 'movieA' REGEXP 'A$' → ✅ |
| + | 바로 앞 문자가 1번 이상 반복 | a+ → 'a', 'aa', 'aaa' |
| * | 바로 앞 문자가 0번 이상 반복 | a* → '', 'a', 'aa', 'aaa' |
| . | 임의의 한 글자 | 'cat' REGEXP 'c.t' → ✅ (. = a) |
| .* | 임의의 문자(.)가 0개 이상 반복(*) | title REGEXP '^[A-Z].*[0-9]$' |
| [ ] | 괄호 안 문자 중 하나 | 'A' REGEXP '[AEIOU]' → ✅ |
| [^ ] | 괄호 안 문자 제외 | 'B' REGEXP '[^AEIOU]' → ✅ |
| ` | ` | OR 조건 |
'코딩 테스트 > 02. SQL' 카테고리의 다른 글
| [solvesql_Lv3] 작품이 없는 작가 찾기 (0) | 2025.10.13 |
|---|---|
| [solvesql]MySQL_2(Lv2) (1) | 2025.10.12 |
| [solvesql_Lv2] 다음날 서울숲의 미세먼지 농도 나쁨 (0) | 2025.10.11 |
| [solvesql]MySQL_1 (Lv_2) (0) | 2025.10.11 |
| [프로그래머스]Oracle SQL_7(Lv4) (0) | 2025.10.04 |