AI 개발 공부 공간

AI, 머신러닝, 딥러닝, Python & PyTorch, 실전 프로젝트

SQLD/2과목 : SQL 기본 및 활용

2.4 NULL 함수

qordnswnd123 2025. 6. 24. 12:47

📘 SQLD – NULL 함수 (ISNULL, IFNULL, COALESCE, NULLIF)


1️⃣ NULL이란 무엇인가?

  • NULL은 값이 없음을 표시하는 특수한 상태입니다.
  • 숫자 0이나 빈 문자열('')과는 명확히 다르며, NULL ≠ 0, NULL ≠ ''입니다 .
  • 일반 비교 연산자(=, <, >)로는 비교할 수 없으며, 대신 IS NULL, IS NOT NULL을 사용해야 합니다 .

2️⃣ IS NULL / IS NOT NULL

  • NULL 검사 전용: NULL 값이 있는지 여부 확인할 때 사용합니다.
 
SELECT * FROM 테이블
WHERE column IS NULL; -- NULL인 행만 반환
WHERE column IS NOT NULL; -- NULL이 아닌 행만 반환

 


3️⃣ NULL 치환 함수

✅ IFNULL(expr, 대체값) — MySQL

SELECT IFNULL(col, 0) FROM 테이블;
  • col이 NULL이면 0을 반환, 아니면 col 값을 그대로 반환 .

✅ ISNULL(expr, 대체값) — SQL Server

SELECT ISNULL(col, 0) FROM 테이블;
  • SQL Server에서 expr이 NULL일 때 대체값 반환 .

✅ NVL(expr, 대체값) — Oracle

SELECT NVL(col, 0) FROM 테이블;
  • Oracle의 NULL치환 함수

4️⃣ COALESCE(expr1, expr2, …)

  • 다중 인자를 받고 첫 번째 NOT NULL 값을 반환
  • 예: SELECT COALESCE(col1, col2, 0) FROM 테이블;
  • ANSI 표준, MySQL·PostgreSQL·SQL Server·Oracle 모두 지원
  • ISNULL, IFNULL, NVL과 다르게 가변 인자를 받음.

5️⃣ NULLIF(expr1, expr2)

  • 두 인자가 같으면 NULL 반환, 아니면 expr1 반환
 
SELECT NULLIF(col, '') FROM 테이블;
  • expr1 = expr2일 경우 CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END와 같습니다 

6️⃣ 비교 테이블


ISNULL(expr, alt) SQL Server NULL → alt
IFNULL(expr, alt) MySQL NULL → alt
NVL(expr, alt) Oracle NULL → alt
COALESCE(...) ANSI 표준 지원 DBMS 모두 첫 번째 NULL 아닌 값 반환
NULLIF(a, b) ANSI 표준 지원 DBMS 모두 a = b → NULL, else a
 

7️⃣ 실무 예시

  • NULL 기본값 설정:
 
SELECT ProductName, IFNULL(UnitsOnOrder, 0) FROM Products;
  • COALESCE를 사용한 다중 우선순위 처리:
 
SELECT COALESCE(col1, col2, '기본값') FROM T;
  • 일치 시 NULL로 변환:
 
SELECT NULLIF(tag, '') AS clean_tag FROM posts;

8️⃣ 팁 정리

  • NULL은 비교 불가 → IS NULL / IS NOT NULL 사용
  • NULL 치환 함수 종류는 DBMS마다 다름 (IFNULL, ISNULL, NVL)
  • COALESCE는 가변 인자 지원 ANSI 표준 함수
  • NULLIF로 특정 값 → NULL 변환 가능
  • 각 함수의 차이와 지원 범위 확실히 이해

'SQLD > 2과목 : SQL 기본 및 활용' 카테고리의 다른 글

2.6 GROUP BY 절  (0) 2025.06.24
2.5 WHERE 절  (1) 2025.06.24
2.3 TRIM 함수  (0) 2025.06.24
2.2 SELECT문  (0) 2025.06.24
2.1 관계형 데이터베이스  (0) 2025.06.24