묭동이 개발 블로그
  • [MySQL] COALESCE로 NULL 값을 원하는 값으로 바꾸기
    2024년 01월 05일 16시 44분 34초에 업로드 된 글입니다.
    작성자: 묭동이

    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;

     

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

    댓글