Lv4. 보호소에서 중성화한 동물 (MySQL)
링크: https://school.programmers.co.kr/learn/courses/30/lessons/59045
내가 작성한 코드
-- 풀이1 (LIKE)
SELECT O.ANIMAL_ID, O.ANIMAL_TYPE, O.NAME
FROM ANIMAL_INS I
JOIN ANIMAL_OUTS O
ON I.ANIMAL_ID = O.ANIMAL_ID
WHERE I.SEX_UPON_INTAKE LIKE 'Intact%'
AND (O.SEX_UPON_OUTCOME LIKE 'Spayed%' OR O.SEX_UPON_OUTCOME LIKE 'Neutered%')
ORDER BY O.ANIMAL_ID;
-- 풀이2 (REGEXP)
SELECT O.ANIMAL_ID, O.ANIMAL_TYPE, O.NAME
FROM ANIMAL_INS I
JOIN ANIMAL_OUTS O
ON I.ANIMAL_ID = O.ANIMAL_ID
WHERE I.SEX_UPON_INTAKE REGEXP '^Intact'
AND O.SEX_UPON_OUTCOME REGEXP '^(Spayed|Neutered)'
ORDER BY O.ANIMAL_ID;
Oracle
-- REGEXP_LIKE
-- 오라클에서는 REGEXP_LIKE(컬럼, 패턴)을 사용
SELECT O.ANIMAL_ID, O.ANIMAL_TYPE, O.NAME
FROM ANIMAL_INS I
JOIN ANIMAL_OUTS O
ON O.ANIMAL_ID = I.ANIMAL_ID
WHERE REGEXP_LIKE(I.SEX_UPON_INTAKE, '^Intact')
AND REGEXP_LIKE(O.SEX_UPON_OUTCOME, '^(Spayed|Neutered)')
ORDER BY O.ANIMAL_ID
REGEXP / REGEXP_LIKE
- 문자열 패턴 검색 (정규표현식)
- OR, 글자수, 시작/끝 등 한번에 가능
- REGEXP '^(Spayed|Neutered)'
- ^ : 문자열 시작
- | : 또는 (OR)
- $ : 끝
- REGEXP 'Male$'
- . : 아무 문자 1개
- REGEXP 'D.g'
- Dog, Dig, D1g, Doog (2글자이므로 불가능)
- {n} : 정확히 n글자 (D+아무글자=총3글자)
- REGEXP '^D.{2}$'
- Dog, Dig, Door (불가능)
- * : 0번 이상
- REGEXP 'a*'
- + : 1번 이상
- REGEXP 'a+'
'코딩테스트' 카테고리의 다른 글
| [26.02.10 코테(MySQL)]-부서별 평균 연봉 조회하기 (0) | 2026.02.10 |
|---|---|
| [02.06 코테(MySQL/Oracle)]-5월 식품들의 총매출 조회하기 (0) | 2026.02.06 |
| [26.02.03 코테(Python/MySQL)]-추억 점수&노선별 평균 역 사이 거리 조회하기 (0) | 2026.02.03 |
| [26.02.02 코테(Python/MySQL)]-문자열 내 마음대로 정렬하기&서울에 위치한 식당 목록 출력하기 (0) | 2026.02.02 |
| [26.01.30 코테(Python/MySQL)]-명예의 전당(1)&식품분류별 가장 비싼 식품의 정보 조회하기 (0) | 2026.01.30 |