📌NULL 처리
MySQL에서는 데이터에 대한 NULL 처리가 필요한 상황이 있다. 이러한 상황에서 사용할 수 있는 MySQL에 다양한 NULL 처리 방법에 대해 알아보자.
📌IFNULL
SELECT IFNULL("COLIUMN", "대체 값")
FROM 테이블;
#IFNULL 함수는 컬럼 데이터가 NULL인 경우 대체 값으로 치환할 수 있다. 기본 구조는 다음과 같다.
📌IFNULL - 예제
mem_id | mem_name | mem_address |
1 |
문OO | 경기 안산시 |
2 | 차OO | 경기 수원시 |
3 |
최OO | NULL |
SELECT mem_id
, mem_name
, IFNULL(mem_address, "주소 누락") AS mem_address
FROM member
#mem_address에 대한 null값을 "주소 누락"으로 치환하였다.
📌조회 결과
mem_id | mem_name | mem_address |
1 |
문OO | 경기 안산시 |
2 | 차OO | 경기 수원시 |
3 |
최OO | 주소 누락 |
📌CASE문
CASE문을 사용하여 NULL인 데이터에 대한 NULL의 CASE를 처리할 수 있다. 이 내용은 이전에 정리하였기에 아래 링크에서 하도록 하자.
2023.02.06 - [RDBS/MYSQL] - [MySQL] CASE문의 기본 사용법 및 사용 시 주의 사항
📌COALESCE
SELECT COALESCE(Column, "대체 값")
FROM 테이블
# IFNULL과의 사용법이 비슷한 COALECE 함수를 사용하여 NULL 처리가 가능하다.
📌COALESCE - IFNULL과의 차이
위의 기본 구조를 보면 IFNULL과 사용법이 유사하다. 하지만 두 개의 파라미터를 사용하는 IFNULL과는 다르게 COALESCE는 여러 개의 파라미터 사용이 가능하다.
📌COALESCE - 예제
col1 | col2 | col3 |
1 | NULL | 3 |
1 | 2 | NULL |
NULL | 2 | 3 |
SELECT coalesce(col1, col2, col3) AS "NULL이 아닌 첫 번째 값"
FROM col;
#IFNULL과 다르게 COALESCE는 파라미터로 여러 개를 가질 수 있다.
#여러 개의 파라미터 중 NULL이 아닌 첫 번째 값을 출력한다.
📌조회 결과
NULL이 아닌 첫 번째 값 |
1 |
1 |
2 |
📌IFNULL VS COALESCE
우선 위 두 개의 함수의 대한 기능적인 차이는 파라미터의 수의 차이이다. 또한 MySQL에서만 사용가능한 IFNULL과는 다르게 COALESCE는 표준 SQL 함수이므로 다양한 RDBS에서 유연하게 사용이 가능한 COALESCE 함수를 적극 사용하는 것이 좋다고 생각한다.
'RDBS > MYSQL' 카테고리의 다른 글
[MySQL]반드시 알아야 하는 쿼리의 실행 순서 (8) | 2023.05.06 |
---|---|
[MySQL]EXISTS, NOT EXISTS를 사용하여 데이터의 존재 여부 확인하기 (1) | 2023.05.03 |
[MySQL]조건절에 포함되는 데이터 가져오기(WHERE IN, WHERE NOT IN) (5) | 2023.04.17 |
[MySQL]해당월의 마지막 일자 구하기(LAST_DAY) (4) | 2023.04.14 |
[MySQL]날짜 포맷팅 함수 STR_TO_DATE() 사용하기(DATE_FORMAT의 역기능) (1) | 2023.04.14 |