본문 바로가기
갭알 ☠️/SQL

[프로그래머스/SQL] NULL 처리하기 (MySQL, Oracle)

by Niyaoh 2022. 8. 8.

https://school.programmers.co.kr/learn/courses/30/lessons/59410

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

ANIMAL_INS 테이블

NAME TYPE NULLABLE INFO
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 VARHCAR(N) FALSE 성별 및 중성화 여부

 

[문제] 입양 게시판에 동물 정보를 게시하려 합니다. 동물의 생물 종, 이름, 성별 및 중성화 여부를 아이디 순으로 조회하는 SQL문을 작성해주세요. 이때 프로그래밍을 모르는 사람들은 NULL이라는 기호를 모르기 때문에, 이름이 없는 동물의 이름은 'No name'으로 표시해 주세요.

 

 

▼ 해석 및 풀이

MySQL

/*
[테이블] : ANIMAL_INS
[컬럼명] : ANIMAL_TYPE, NAME, SEX_UPON_INTAKE
[조건] : ANIMAL_ID 기준 ASC 정렬. 단, NAME이 NULL인 데이터는 'No name'으로 나타냄.

IFNULL(A, B) : A(컬럼명)가 NULL이면 B(값)를 반환, NULL이 아니라면 A를 반환
*/

SELECT ANIMAL_TYPE, IFNULL(NAME, 'No name') AS NAME, SEX_UPON_INTAKE FROM ANIMAL_INS;

Oracle

/*
NVL(컬럼명, NULL일 때 값)
NVL2(컬럼명, NULL이 아닐 때 값, NULL일 때 값)
*/

SELECT ANIMAL_TYPE, NVL(NAME, 'No name'), SEX_UPON_INTAKE FROM ANIMAL_INS ORDER BY ANIMAL_ID ASC;

댓글