[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 THEN 식1
WHEN 조건식2 THEN 식2
...
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;
Author And Source
이 문제에 관하여([SQL] NULL 처리 : IFNULL, CASE), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@7ryean/SQL-NULL-처리-IFNULL-CASE-COALESCE저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)