DataBase/SQL

[SQL] NULL 관련 SQL 함수(NVL, COALESCE, NULLIF)

mingmongs 2025. 4. 21. 17:36

title

SQL문에서 NULL과 관련한 함수가 다양한데,
각 DB 환경과 상황에 맞춰서 사용하는 것이 중요하다.
NULL 관련 함수는 활용도가 높기 때문에,
각각의 함수에 대해 특징과 사용 예시를 알아보자.

 

1) NVL, NVL2, ISNULL, IFNULL

1-1) NVL 함수

: Oracle에서 사용하는 함수로, 첫 번째 인자가 NULL일 경우 두 번째 인자를 반환함

SELECT NVL(COL1, 0) FROM TABLE1;

1-2) NVL2 함수

: Oracle에서 사용하는 함수로 NVL 함수와 유사하지만, 세 개의 인자를 받을 수 있음

  • 첫 번째 인자가 NULL이 아닌 경우 두 번째 인자를 반환하고, NULL인 경우 세 번째 인자를 반환함
SELECT NVL2(COL1, COL2, 0) FROM TABLE1;

1-3) ISNULL 함수

: MSSQL(SQL Server)에서 사용하는 함수로, NVL 함수와 동일하게 첫 번째 인자가 NULL일 경우 두 번째 인자를 반환함

SELECT ISNULL(COL1, 0) FROM TABLE1;

1-4) IFNULL 함수

: MySQL에서 사용하는 함수로, NVL 함수와 동일하게 첫 번째 인자가 NULL일 경우 두 번째 인자를 반환함

SELECT IFNULL(COL1, 0) FROM TABLE1;

 

 

2) COALESCE

: 처음으로 NULL이 아닌 컬럼을 만나면 그 값을 반환함

  • 여러 개의 인자를 받을 수 있음(NULL이 아닌 첫 번째 인자 반환)
  • SQL 표준 함수로, 대부분의 데이터베이스에서 사용할 수 있음(Oracle, MySQL, MariaDB 등)
SELECT COALESCE(COL1, COL2, · · · , 0) FROM TABLE1;

위의 예시처럼 여러 개의 컬럼을 나열하고, 컬럼의 값이 NULL이 아닌 것이 있다면 그 값을 반환한다.
만약 나열한 컬럼들이 다 NULL이라면 마지막 인자인 0을 반환한다.

 

3) NULLIF

: Oracle과 MSSQL에서 사용하는 함수로, 지정한 두 인자가 같으면 NULL을 반환하고, 아니면 첫 번째 인자 값을 반환

SELECT NULLIF(COL1, '') FROM TABLE1;

위 경우, COL1의값이 '' 인 경우 NULL을 반환, '' 이 아니라면 해당 컬럼의 값을 반환한다.

 

4) 예시

: 위에서 소개한 함수들에 대해 ORACLE 환경에서 간단한 쿼리를 작성해보았다.

 

img1
img2

 

 

[reference]
https://cas12kr.tistory.com/54
https://jieun-c.tistory.com/3
https://blog.naver.com/seek316/222106306739