Technique/MySQL

[Lv.2] NULL 처리하기 [ifnull, coalesce]

먼치 2024. 5. 6. 02:16
문제 파악

  • 출력할 컬럼 : ANIMAL_TYPE, NAME, SEX_UPON_INTAKE ⇒ SELECT
  • 데이터를 가져올 테이블 : ANIMAL_INS ⇒ FROM
  • 조회 순서 : ANIMAL_ID 순 ⇒ ORDER BY
  • 요구 조건 : 이름이 없는 동물의 이름은 "No name"으로 표시

 

NULL을 처리하는 여러 가지 방법

 

IFNULL

format : IFNULL(컬럼명, 대체할 값)

→ 해당 컬럼에 NULL이 있으면 대체할 값을 출력

IFNULL(NAME, "No name")

 

 IF

format : IF(조건식, 두 번째 인자, 세 번째 인자)

→ 만약, 조건식이 True 이면 두번째 인자를, false이면 세 번째 인자를 반환

→ IF(컬럼명 is null then 대체할 값) : 만약 컬럼명이 null이면 대체할 값을 출력

→ IF(컬럼명 is not null, 1, 2) : 만약 컬럼명이 null이 아니면 1을 null이면 2를 출력

SELECT IF(Name IS NULL then “No name”) ;
SELECT IF(Name IS NOT NULL, NAME, “No name”) ;

 

 COALESCE

format : COALESCE(컬럼명, 대체할 값)

→ 해당 컬럼에 NULL이 있으면 대체할 값을 출력

COALESCE(NAME, "No name")

 

⭐ COALESCE 사용법 2

format : COALESCE(컬럼1, 컬럼2, 대체할 값)

→ 컬럼1의 값이 NULL이면 컬럼 2의 값을 출력, 컬럼 2의 값이 NULL이면 대체할 값을 출력

COALESCE(NAME, ID, "No name")

 

 

문제 해결

 

> 완성 코드

SELECT ANIMAL_TYPE, IFNULL(NAME, "No name") as NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS;