hanker

SQL - SQL 각 데이터베이스 별 NULL 처리 방법 (MySQL / MSSQL / ORACLE / PostgreSQL) 본문

DATABASE/SQL

SQL - SQL 각 데이터베이스 별 NULL 처리 방법 (MySQL / MSSQL / ORACLE / PostgreSQL)

hanker 2025. 1. 1. 00:00
반응형

데이터베이스에서 NULL은 "값이 없다"는 상태를 나타낸다.

하지만 NULL을 다루는 방식은 데이터베이스마다 미묘한 차이가 있는데,

이번 글에서 Oracle, MySQL, MSSQL, PostgreSQL에서 NULL을 처리하는 방법을 알아보자!


Oracle

 

Oracle에서는 NULL을 다룰 때 NVLCOALESCE 함수가 자주 사용된다.

 

NVL 함수 : NVL은 NULL 값을 대체할 값을 지정

COALESCE 함수 : COALESCE는 여러 값을 순서대로 확인하여 NULL이 아닌 첫 번째 값을 반환

 

SELECT NVL(NULL, 'hanker') AS Result FROM DUAL;
-- 결과: 'hanker'

SELECT COALESCE(NULL, NULL, 'hanker') AS Result FROM DUAL;
-- 결과: 'hanker'

 


MySQL

 

MySQL은 IFNULLCOALESCE를 사용해 NULL을 처리한다.

IFNULL 함수 : IFNULL은 NULL 값을 대체할 값을 지정

COALESCE 함수 : COALESCE는 Oracle과 동일한 방식으로 작동

SELECT IFNULL(NULL, 'hanker') AS Result; 
-- 결과: 'hanker'

SELECT COALESCE(NULL, 'hanker') AS Result; 
-- 결과: 'hanker'

 


MSSQL

 

MSSQL은 ISNULLCOALESCE를 사용한다.

ISNULL 함수 : ISNULL은 NULL 값을 대체

COALESCE 함수  : MSSQL에서도 COALESCE는 동일하게 동작

SELECT ISNULL(NULL, 'hanker') AS Result; 
-- 결과: 'hanker'

SELECT COALESCE(NULL, 'hanker') AS Result; 
-- 결과: 'hanker'

 


PostgreSQL

 

PostgreSQL에서는 COALESCENULLIF를 사용한다.

COALESCE 함수 : PostgreSQL의 COALESCE는 다른 데이터베이스와 동일

NULLIF 함수 : NULLIF는 두 값이 같으면 NULL을 반환하고, 그렇지 않으면 첫 번째 값을 반환

SELECT COALESCE(NULL, 'hanker') AS Result; 
-- 결과: 'hanker'

SELECT NULLIF(1, 1) AS Result1, NULLIF(1, 2) AS Result2; 
-- 결과1: NULL, 결과2: 1

 


NULL 비교 시 주의할 점

 

SQL에서 NULL은 "값이 없다"는 의미이기 때문에 == NULL 같은 비교는 항상 FALSE를 반환한다.

대신 IS NULLIS NOT NULL을 사용해야 한다.

 


NULL 처리 비교표
데이터베이스 대체 함수 NULL 비교 함수
Oracle
MySQL
MSSQL
PostgreSQL
NVL, COALESCE IS NULL -
IFNULL, COALESCE IS NULL -
ISNULL, COALESCE IS NULL -
COALESCE, NULLIF IS NULL NULLIF 지원
반응형