Table: products
+--------------+------------+
| Column Name | Type |
+--------------+------------+
| product_id | int |
| product_name | varchar |
| description | varchar |
+--------------+------------+
(product_id)는 이 테이블의 고유 키입니다.
테이블의 각 행은 고유한 ID, 이름, 설명을 가진 하나의 제품을 나타냅니다.
문제
제품 설명(description)에 유효한 일련번호(Serial Number) 패턴이 포함된 모든 제품을 찾는 SQL 쿼리를 작성하세요.
유효한 일련번호는 다음 규칙을 따릅니다:
1. 대소문자를 구분하여 SN으로 시작해야 합니다.
2. 그 뒤에 정확히 4자리 숫자가 따라와야 합니다.
3. 이어서 하이픈(-) 이 있어야 하고, 그 뒤에 정확히 4자리 숫자가 있어야 합니다.
4. 일련번호는 제품 설명(description) 내에 포함되어 있어야 하며, 반드시 시작 부분일 필요는 없습니다.
결과 테이블은 product_id 기준으로 오름차순 정렬하여 반환하세요.
Example:
Input:
products table:
+------------+--------------+------------------------------------------------------+
| product_id | product_name | description |
+------------+--------------+------------------------------------------------------+
| 1 | Widget A | This is a sample product with SN1234-5678 |
| 2 | Widget B | A product with serial SN9876-1234 in the description |
| 3 | Widget C | Product SN1234-56789 is available now |
| 4 | Widget D | No serial number here |
| 5 | Widget E | Check out SN4321-8765 in this description |
+------------+--------------+------------------------------------------------------+
Output:
+------------+--------------+------------------------------------------------------+
| product_id | product_name | description |
+------------+--------------+------------------------------------------------------+
| 1 | Widget A | This is a sample product with SN1234-5678 |
| 2 | Widget B | A product with serial SN9876-1234 in the description |
| 5 | Widget E | Check out SN4321-8765 in this description |
+------------+--------------+------------------------------------------------------+
설명 :
- Product 1 : 유효한 일련번호 SN1234-5678
- Product 2 : 유효한 일련번호 SN9876-1234
- Product 3 : 유효하지 않은 일련번호 SN1234-56789 (하이픈 뒤에 숫자가 5자리라서 유효하지 않음)
- Product 4 : 설명에 일련번호가 없음
- Product 5 : 유효한 일련번호 SN4321-8765
결과 테이블은 product_id 기준으로 오름차순 정렬됩니다.
✏️ 풀이
# 풀이1 #
SELECT product_id, product_name, description
FROM products
WHERE description LIKE '%SN____-____ %' OR description LIKE '%SN____-____'
ORDER BY product_id;
# 풀이2 #
SELECT product_id, product_name, description
FROM products
WHERE description REGEXP 'SN[0-9]{4}-[0-9]{4}\\b'
ORDER BY product_id;
SN으로 시작하고 그 뒤에 4자리 숫자 이어서 하이픈(-) 그 뒤에 4자리 숫자
이 형식이 중간에 있을 수도 문장의 첫 시작일 수도 문장의 끝 일 수도 있다
해당 경우를 고려해서 쿼리를 짜야한다
'[코딩테스트] > [SQL]' 카테고리의 다른 글
[StrataScratch - SQL] (Easy) Finding Updated Records (0) | 2025.04.15 |
---|---|
[LeetCode - SQL] (Easy) 3436. Find Valid Emails (2) | 2025.04.14 |
[프로그래머스 Lv.5] 멸종위기의 대장균 찾기 (0) | 2025.04.11 |
[프로그래머스 Lv.5] 상품을 구매한 회원 비율 구하기 (0) | 2025.04.11 |
[프로그래머스 Lv.4] 특정 세대의 대장균 찾기 (0) | 2025.04.11 |