programmers.co.kr/learn/courses/30/lessons/59410
1. 서론
NVL 함수를 알게 해 준 문제
2. 문제 풀이
ANIMAL_INS: 동물 보호소에 들어온 동물의 정보를 담은 테이블
테이블 구조
ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE
(각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부)
Q. 동물의 생물 종, 이름, 성별 및 중성화 여부를 아이디 순으로 조회하는 SQL문을 작성해주세요. 이때 프로그래밍을 모르는 사람들은 NULL이라는 기호를 모르기 때문에, 이름이 없는 동물의 이름은 "No name"으로 표시해 주세요.
핵심은 NULL 값을 "No name"으로 대체해서 출력해야 한다는 것이다. 여러 시도를 해봤으나 모르겠어서 검색해본 결과 NVL이란 것이 있다는 걸 알았다.
NVL 참조: deftkang.tistory.com/132
그냥 NVL이 있고 NVL2가 있는데 둘 다 null일 경우 값을 처리해주는 함수이나 NVL은 그냥 대체하고 NVL2는 null인 경우와 아닌 경우 둘 다 커버할 수 있는 함수다.
3. 코드 설명
SELECT animal_type, NVL(name, 'No name'), sex_upon_intake
FROM animal_ins
ORDER BY animal_id;
NVL 함수를 사용해서 name 칼럼이 null인 경우 'No name'으로 처리하도록 만들어줬다.
아이디 순으로 조회하라는 조건이 있어서 order by도 해줬다.
+MySQL
SELECT animal_type, IFNULL(name, 'No name') as name, sex_upon_intake
FROM animal_ins
MySQL에는 NVL이 없다. 대신에 IFNULL이라는 함수가 있다. 역할은 100% 동일하다. ㅋㅋ... 통일하라고!!
order by 안 해도 맞네...
'SQL' 카테고리의 다른 글
[ORACLE] LeetCode Second Highest Salary (0) | 2021.03.13 |
---|---|
[ORACLE] 프로그래머스 입양 시각 구하기(1) (+MySQL) (0) | 2021.03.11 |
[ORACLE] 프로그래머스 동명 동물 수 찾기 (0) | 2021.03.11 |
[ORACLE] 프로그래머스 고양이와 개는 몇 마리 있을까 (0) | 2021.03.11 |
[ORACLE] 프로그래머스 중복 제거하기 (0) | 2021.03.11 |