[MySQL] NULL 처리 (IS NULL, IFNULL, COALESCE)

2023. 8. 13. 22:59·💬 Database

들어가며

데이터의 NULL을 처리해야 하는 상황에서 MySQL에서 사용할 수 있는 여러가지 방법에 대해 정리해보고자 합니다. 이 포스팅에서는 MySQL의 NULL을 다루는 방법 중 가장 많이 사용되는 IS NULL, IFNULL, COALESCE에 대해 다룹니다.


❏ IS NULL, IS NOT NULL

IS NULL에 대해서는 지난 번 비교 연산자를 다루면서 개념만 확인해보았는데, 다시 한 번 정리해보도록 하겠습니다.

IS NULL과 IS NOT NULL은 데이터의 값이 NULL인지 아닌지 확인할 수 있는 연산자입니다. 따라서, 이 두 가지 방식을 이용하여 NULL이 포함되어있는 데이터에 대해 원하는대로 값을 조회해올 수 있습니다! 👍

❍ IS NULL

SELECT * FROM student WHERE school_id IS NULL;

이 쿼리는 student 테이블에서 school_id 정보가 NULL인 모든 학생을 조회합니다.

❍ IS NOT NULL

SELECT * FROM student WHERE school_id IS NOT NULL;

반대로 이 쿼리는 student 테이블에서 school_id 정보가 NULL이 아닌 모든 학생을 조회합니다.

 

주의해야 할 점

❓ IS NULL이나 IS NOT NULL 말고, 다른 비교 연산자인 =, <>, !=를 사용할 수 있을까요?

Suspicious comparison with NULL, probably IS NULL operator should be used

NULL에 대한 비교가 의심스럽다면서, IS NULL을 사용하라는 경고문을 볼 수 있습니다.

NULL에 대해 비교하기 위해선 반드시 IS NULL, IS NOT NULL을 사용합시다!

 

❏ IFNULL

IFNULL 함수는 첫 번째 인자가 NULL이 아니면 그대로 반환, NULL이면 두 번째 인자를 반환합니다.

SELECT student_id, IFNULL(school_id, 0) AS school_id
FROM student;

이 쿼리는 school_id가 NULL이 아니라면 그대로 반환하되, NULL인 경우에는 0으로 처리됩니다.

이처럼, 값을 조회했을 경우, NULL인 값에 대해 기본적으로 동일한 값을 부여할 수 있습니다.

 

❏ COALESCE

COALESCE 함수는 NULL이 아닌 첫 번째 인자를 반환합니다. 모든 인자가 NULL이면 NULL을 반환하게 됩니다.

SELECT COALESCE(컬럼1, 컬럼2, 컬럼3, ...) 
FROM table;

컬럼1이 NULL이 아니면, 컬럼1을 반환하고, NULL이면 컬럼2를 반환합니다.

컬럼이 모두 NULL이면 그제서야 NULL이 반환됩니다.

COALESCE는 IFNULL에 비해 여러 값을 후보군으로 둘 수 있기에, 조금은 더 유연하게 사용할 수 있는 것 같습니다.

반응형
'💬 Database' 카테고리의 다른 글
  • [Database] 인덱스(Index)란
  • [Database] JOIN이란
  • [MySQL] MySQL의 연산자(Operator) | 산술, 논리, 비교
  • MariaDB 설치 & SQLYOG 설치
dmaolon
dmaolon
프로그래밍을 공부한 내용을 기록하는 공간입니다.
  • dmaolon
    기록 남기기
    dmaolon
  • 전체
    오늘
    어제
    • ALL (260)
      • ➰ Series (5)
      • 🎯PS (168)
        • Algorithm (15)
      • ☕ Java (11)
      • 🍀 Spring Boot (29)
      • 💬 Database (9)
      • 🐣 Computer Science (14)
      • 👍 Daily (4)
      • 🎁ReactJS (4)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • 태그

    자바
    Spring
    파이썬
    프로그래밍
    BFS
    알고리즘
    프로그래머스
    dfs
    백준
    코딩
  • hELLO· Designed By정상우.v4.10.1
dmaolon
[MySQL] NULL 처리 (IS NULL, IFNULL, COALESCE)
상단으로

티스토리툴바