SQL/MySQL

[MySQL] COALESCE로 NULL 값을 원하는 값으로 바꾸기

묭동이 2024. 1. 5. 16:44

COALESCE 함수

  • 테이블의 특정 칼럼에 있는 NULL 값을 특정한 값으로 바꾼다.
  • 예시
    • NAME 열의 NULL 값을 'Unknown'으로 바꾸기
    • COALESCE('NAME', 'Unknown')

 

프로그래머스에 있는 SQL 문제 예시를 통해 사용법을 익혀보겠습니다

문제 링크

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

 

프로그래머스

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

programmers.co.kr

 

 

 

문제해석

먼저 테이블은 ANIMAL_INS 하나만 사용하고 있습니다. 테이블에서 조회하는 column은 생물 종, 이름, 성별 및 중성화 여부이며

조회 조건으로 '아이디 순으로 조회'가 제시되었습니다.

또한, NAME column에 NULL 값이 있으면 'No Name'으로 표시하라고 되어있습니다.

 

예시

 

출력 예시를 보면 ANIMAL_TYPE이 같을 때 ANIMAL_ID가 오름차순으로 정렬되어있는 것을 확인할 수 있습니다.

"오름차순, 내림차순" 쿼리를 처리할 때는 ORDER BY 를 사용하면 됩니다.

아래 쿼리문에서 보실 수 있듯이 ANIMAL_ID를 기준으로 오름차순으로 정렬하는 방법은 ORDER BY ANIMAL_ID ASC 쿼리를 작성해주시면 됩니다. 오름차순(ASC)이 default이므로 내림차순으로 정렬할 때는 DESC로 적어주시면 됩니다.

또한, NAME 필드의 NULL 값을 'No name'으로 표시하라는 문제의 조건은 COALESCE 함수를 사용하여 처리할 수 있습니다.

COALESCE(NAME, 'No name') 쿼리는 NAME 필드의 NULL 값을 'No name'으로 표시하라는 의미입니다.

 

 

SQL 쿼리

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

 

틀린 부분 댓글로 작성해주시면 감사하겠습니다 😊