본문 바로가기
데이터베이스[DB]/MSSQL

[MSSQL] ISNULL, NULLIF

by 낭만의개꿈 2026. 5. 8.
반응형

 

 

NULL 처리는 실무 쿼리에서 빠지지 않는 기본 중의 기본이자 제일 많이 사용되는 작업이다. 조회 결과에서 NULL 을 다른 값으로 바꾸거나, 반대로 특정 조건일 때 NULL로 만들어야 하는 경우가 생각보다 자주 있다. 오늘은 그때마다 적재적소에 사용하는 ISNULL, NULLIF  함수들의 차이를 한번 살펴보려고 한다.

TEST Table & Data Create
  • 설명글
CREATE TABLE #temp_member
(
    member_nm   VARCHAR(20),
    nickname    VARCHAR(20),
    point       INT
)

INSERT INTO #temp_member VALUES ('김나나', '낭만고양이', 100)
INSERT INTO #temp_member VALUES ('이다다', NULL,        50)
INSERT INTO #temp_member VALUES ('박하하', NULL,        NULL)

SELECT * FROM #temp_member

 

#temp_member 데이터 생성 조회

 

ISNULL
  • MSSQL 전용 함수
  • NULL 이면 지정한 대체값으로 반환, NULL이 아니면 원래 값 그대로 반환
SELECT  member_nm,
        ISNULL(nickname, '별명없음') AS nickname,
        ISNULL(point, 0)             AS point
  FROM  #temp_member

 

ISNULL 활용 조회

 

nickname이 NULL 인 경우 '별명없음' 으로, point가 NULL인 경우는 0 으로 처리되어 조회되는 것을 확인할 수 있다.

 

NULLIF
  • 두 값이 같으면 NULL, 다르면 첫 번째 값을 반환
  • 0 으로 나누기 오류 방지 등 특정 값을 NULL로 바꿔야할 때 활용
SELECT  member_nm,
        NULLIF(point, 300) AS point
  FROM  #temp_member

NULLIF 활용 조회

 

아래의 쿼리처럼 나누기를 처리하면 오류가 발생한다. 이럴 때, NULLIF 를 이용하여 나눗셈을 실행하면 NULL 로 처리되며, 오류가 발생하지 않는다.

SELECT  member_nm,
		100/IsNull(point,0)
  FROM  #temp_member

나눗셈 오류 발생

SELECT  member_nm,
		100/NULLIF(point,0),
		point
  FROM  #temp_member

반응형