이름에 el이 들어가는 동물 찾기
String, Date
이름에 el이 들어가는 동물 찾기
문제 설명
다음은 동물 보호소에 들어온 동물의 정보를 담은 ANIMAL_INS 테이블입니다.
ANIMAL_INS 테이블
| Column name | Type | Nullable | Description |
|---|---|---|---|
| ANIMAL_ID | VARCHAR(N) | FALSE | 동물의 아이디 |
| ANIMAL_TYPE | VARCHAR(N) | FALSE | 생물 종 |
| DATETIME | DATETIME | FALSE | 보호 시작일 |
| INTAKE_CONDITION | VARCHAR(N) | FALSE | 보호 시작 시 상태 |
| NAME | VARCHAR(N) | TRUE | 이름 |
| SEX_UPON_INTAKE | VARCHAR(N) | FALSE | 성별 및 중성화 여부 |
문제
보호소에 돌아가신 할머니가 기르던 개를 찾는 사람이 찾아왔습니다. 이 사람이 말하길 할머니가 기르던 개는 이름에 ‘el’이 들어간다고 합니다. 동물 보호소에 들어온 동물 이름 중, 이름에 ‘EL’이 들어가는 개의 아이디와 이름을 조회하는 SQL문을 작성해주세요. 이때 결과는 이름 순으로 조회해주세요. 단, 이름의 대소문자는 구분하지 않습니다.
풀이 과정
- 조건 확인
- 이름에 ‘EL’이 포함된 개(Dog)를 찾아야 하며 대소문자는 구분하지 않아야 합니다.
- LOWER 함수와 LIKE 사용
- LOWER(NAME)을 사용하여 모든 이름을 소문자로 변환하고, ‘el’이 포함된 경우 찾기
- LIKE ‘%el%’을 사용하여 부분 문자열 일치를 검사
- 동물 종류 필터링
- ANIMAL_TYPE = ‘Dog’ 조건으로 개만 선택
- 결과 정렬
- 정렬 기준에 따라 ORDER BY로 결과 정렬
- 이름을 기준으로 오름차순 정렬
- 정렬 기준에 따라 ORDER BY로 결과 정렬
- 최종 결과 출력
- SELECT 절에서 ANIMAL_ID, NAME을 출력
- 교훈
- 대소문자 구분 없이 문자열을 비교해야 할 때는 LOWER 또는 UPPER 함수 사용해서 형태 통일 시키기. 그래야 누락 없이 조회 가능하다. 오케이?
예쑤
- 대소문자 구분 없이 문자열을 비교해야 할 때는 LOWER 또는 UPPER 함수 사용해서 형태 통일 시키기. 그래야 누락 없이 조회 가능하다. 오케이?
정답
1
2
3
4
5
6
7
8
9
10
SELECT
ANIMAL_ID,
NAME
FROM
ANIMAL_INS
WHERE
ANIMAL_TYPE = 'Dog'
AND LOWER(NAME) LIKE '%el%'
ORDER BY
NAME;
Tip
부분 문자열 검색과 대소문자 변환
- LOWER(
컬럼명): 모든 문자를 소문자로 변환- LIKE 연산자와 와일드카드 %를 사용해 특정 부분 문자열이 포함된 데이터 검색하기
개념 확인
- LOWER 함수
- 대소문자 구분 없이 문자열을 비교할 때 사용합니다, 문자열을 소문자로 변환하여 조건문에서 비교
- UPPER 함수
- 문자열을 대문자로 변환하여 조건문에서 비교
- LIKE 연산자와 와일드카드
- 특정 문자열 패턴과의 일치를 검사
- % : 0개 이상의 문자를 대체하는 와일드카드로 사용
- _ : 정확히 한 개의 문자를 대체하는 와일드카드로 사용
Useful link
This post is licensed under Park Juyoung by the author.