반응형

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

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

nickname이 NULL 인 경우 '별명없음' 으로, point가 NULL인 경우는 0 으로 처리되어 조회되는 것을 확인할 수 있다.
NULLIF
- 두 값이 같으면 NULL, 다르면 첫 번째 값을 반환
- 0 으로 나누기 오류 방지 등 특정 값을 NULL로 바꿔야할 때 활용
SELECT member_nm,
NULLIF(point, 300) AS point
FROM #temp_member

아래의 쿼리처럼 나누기를 처리하면 오류가 발생한다. 이럴 때, NULLIF 를 이용하여 나눗셈을 실행하면 NULL 로 처리되며, 오류가 발생하지 않는다.
SELECT member_nm,
100/IsNull(point,0)
FROM #temp_member

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

반응형
'데이터베이스[DB] > MSSQL' 카테고리의 다른 글
| [MSSQL] 임시테이블(#temp), 테이블변수(@table) (0) | 2026.05.13 |
|---|---|
| [MSSQL] WITH(NOLOCK) (0) | 2026.05.11 |
| [MSSQL] 데이터 타입 변환 ( CAST, CONVERT, TRY_CAST, TRY_CONVERT ) (0) | 2026.01.09 |
| [MSSQL] 숫자 반올림, 올림, 내림 (ROUND, CEILING, FLOOR) (0) | 2026.01.08 |
| [MSSQL] STRING_AGG, FOR XML PATH (0) | 2025.12.29 |
| [MS-SQL] 문자열합치기 ( [+], CONCAT, CONCAT_WS ) (0) | 2025.12.26 |
| [MS-SQL] CONVERT, FORMAT, YEAR, MONTH, DAY (0) | 2025.12.25 |
| [MS-SQL] 교집합, 부분집합 - JOIN ( INNER, LEFT, RIGHT, FULL ) (0) | 2025.12.24 |