본문 바로가기
Programming/SQL

[SQL] null 처리하기 (조회, 대체)

by 코딩하는 금융인 2021. 7. 29.

안녕하세요.

오늘은 데이터에서 흔히 볼 수 있는 결측치 null SQL로 처리하는 방법에 대해 알아보겠습니다.

출처 : Rpubs

Null 개념

Null은 unknown 또는 N/A(not applicable)이라는 의미로, 0과 공백과는 다르게 아예 값이 없는 값입니다.

데이터에서는 결측치 또는 결측값이라고 불리며, 이를 어떻게 처리해주느냐에 따라서 분석이 완전히 달라질 수 있어 결측값에 대한 처리는 상당히 중요합니다.

 

기본적으로 데이터베이스(DB)에서는 테이블을 생성할 때 기본키는 null이 들어갈 수 없다는 조건이 붙습니다.

예를 들어, 어떤 유저에 대한 식별번호 id를 지정해주었을 때 유저라면 id를 무조건 가지고 있어야 함이라는 조건을 강제로 넣어주어 유저를 구별할 수 있게 해줍니다.

 

또한, null은 아예 값이 없는 값으로 sum이나 avg 같은 연산 함수를 쓸 때 행에 null 값이 포함되어 있다면 이를 자동으로 제외시키고 계산해줍니다. (SQL 外 다른 언어에서는 보통 따로 조작해주어야 함)

Null 조회하기

SQL에서 Null 값을 조회하는 방법은 간단합니다.특정 값을 찾을 때 쓰는 연산자 '=' 대신 IS를 사용하면 됩니다.

## Null 조회하기 ##
# 1. Null인 값 조회하기
SELECT * FROM Catergories
WHERE CatergoryName is Null;

# 2. Null이 아닌 값 조회하기
SELECT * FROM Catergories
WHERE CatergoryName is not Null;

이렇게 where문에서 is null 또는 is not null을 활용하여 null인 행과 null이 아닌 행을 조회하면 됩니다.

Null 처리하기

SQL에서 Null을 처리하는 방법은 함수를 사용하거나 CASE WHEN문을 사용하면 됩니다.

 

SQL별 null 처리함수

DB 언어 처리함수
ORACLE NVL(expr1, expr2)
MSSQL ISNULL(expr1, expr2)
MYSQL IFNULL(expr1,expr2)
MYSQL COALESCE(expr1,expr2,...expr)

마지막 행을 제외하고는 처리되는 방식이 동일합니다.

expr1 column에서 null이 있는 값을 expr2로 대체한다 입니다.

COALESCE는 expr1이 null이라면 그 뒤의 expr2로 대체, expr2도 null이라면 그 뒤의 값으로 대체..

즉, 처음부터 null이 아닌 값이 나오면 그 값으로 대체한다 입니다.

 

SQL CASE WHEN문 예시

SELECT CategoryID,
	   CASE WHEN CategoryName IS NULL THEN 'No Name'
	   ELSE CategoryName END AS '카테고리명'
FROM Categories;

CASE WHEN 조건에 IS NULL을 넣어주고 THEN에 대체값을 넣어줍니다.

ELSE에는 원래 column을 기입하고 원하는 coulmn명으로 END AS 해주면 끝.

반응형

댓글