NULL의 기본 개념
- NULL ≠ 공백, NULL ≠ 0
- 집계 함수에서는 NULL 값이 연산 대상에서 제외됨 (SUM, AVG 등).
- 사칙연산에 NULL이 포함되면 결과는 항상 NULL.
- 예: 10 + NULL → NULL
- 비교 연산(=, >, <, >=, <=)에서 NULL은 항상 False로 간주됨.
- 부정 비교 연산(!=, <>, NOT 칼럼명 =...) 역시 조건 만족하지 않음.
- 조건절에서 NULL 비교 시 반드시 IS NULL 또는 IS NOT NULL 사용.
NULL 관련 단일행 함수
- NVL(표현식 1, 표현식 2) (Oracle) / ISNULL(표현식 1, 표현식 2) (SQL Server) → 표현식1이 NULL이면 표현식 2 반환.
- NULLIF(표현식 1, 표현식 2)→ 두 값이 같으면 NULL, 다르면 표현식 1 반환.
- 예: NULLIF(10, 10) → NULL, NULLIF(10, 20) → 10
- COALESCE(표현식 1, 표현식 2, …) → 인수 중 처음으로 NULL이 아닌 값 반환.
- 예: COALESCE(NULL, NULL, 'A', 'B') → 'A'
NULL과 정렬 (DBMS별 차이)
- Oracle
- NULL을 가장 "큰 값"으로 취급
- ORDER BY ASC → 맨 뒤
- ORDER BY DESC → 맨 앞
- SQL Server
- NULL을 가장 "작은 값"으로 취급
- ORDER BY ASC → 맨 앞
- ORDER BY DESC → 맨 뒤
정렬 시 DBMS마다 다르게 동작하므로 시험이나 실무에서 반드시 주의!
'SQL Professional' 카테고리의 다른 글
| [독학! SQLP] 그룹핑 쿼리 (0) | 2025.08.20 |
|---|---|
| [독학! SQLP] 함수 정리! (0) | 2025.08.20 |
| [독학! SQLP] DCL? DDL? DML? TCL? (0) | 2025.08.19 |
| [독학! SQLP] 정규형? 정규화? 반정규화? (0) | 2025.08.19 |
| [독학! SQLP] 학습용 Oracle 설치 가이드 (1) | 2025.08.19 |