[SQL] NULL 처리 : IFNULL, CASE

🔭 프로그래머스 SQL 문제 : NULL 처리하기

내가 처음 사용한 코드는 다음과 같다.

SELECT ANIMAL_TYPE, NAME, SEX_UPON_INTAKE
FROM AINMAL_INS
WHERE NAME IS NULL;

오답 이유

NULL값인 행을 찾아서 어떻게 할건데?

처음 작성한 쿼리는 WHERE절, 조건으로 NAME이 NULL값인 경우의 행에 대해서만 출력을 하게 된다. NULL인 값을 출력하는게 아니라 NULL인 값을 바꿔야 하는건데 일종의 후속조치(?), 문제 제목처럼 NULL을 처리하는 방법을 몰랐다.

해결 방법

IFNULL 사용

답은 간단했다. 아주 기초적인...
'만약에 해당 값이 NULL이라면 No name으로 바꿔줘!' 를 생각해보면 된다.

정답 코드

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

NULL을 처리하는 함수

NULL을 처리하는 함수는 IFNULL, CASE가 있다. 순서대로 살펴보자.

IFNULL

IFNULL은 만약 값이 NULL이라면 다른 값으로 바꿔주는 함수이다. IFNULL처럼

# IFNULL 사용 방법

SELECT IFNULL(Column, "Null일 경우 대체 값") FROM 테이블명;   

CASE

CASE는 조건을 사용해 TRUE, FALSE에 따라 값을 설정해 줄 수 있다.

# CASE 사용 방법

CASE
	WHEN 조건식1 THEN1
    WHEN 조건식2 THEN2
    ...
    ELSE 조건에 맞는 경우가 없는 경우 실행할 식
END

만약, CASE를 사용해서 정답을 푼다면 다음과 같이 작성할 수 있다. 이번 문제는 조건이 여러개가 있는 경우가 아니라서 IFNULL을 사용하는 것이 훨씬 깔끔해보인다.

SELECT ANIMAL_TYPE, 
(CASE
    WHEN NAME IS NULL THEN 'No name'
    ELSE NAME
 END) AS NAME, SEX_UPON_INTAKE 
 FROM ANIMAL_INS 
 ORDER BY ANIMAL_ID;

좋은 웹페이지 즐겨찾기