[ORACLE] 프로그래머스 NULL 처리하기(+MySQL)
2021. 3. 11.
반응형

programmers.co.kr/learn/courses/30/lessons/59410

 

코딩테스트 연습 - NULL 처리하기

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

programmers.co.kr

 

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

 

[Oracle] 오라클에서 Null 처리하는 방법과 연산시 주의사항(NVL, NVL2, NULLIF, DECODE)

오라클에서 SELECT 할 때 NULL이면 다른 값으로 변경해줘야 하는 경우가 많다. 이것을 NULL 처리한다고 하는데 오라클에서 제공하는 NVL, NVL2 함수를 써서 쉽게 처리할 수 있다. NVL함수는 오라클에서

deftkang.tistory.com

 

그냥 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 안 해도 맞네...

 

 

 

 

반응형
myoskin