본문 바로가기
database/oracle

🌱 4편. 데이터 타입과 NULL 처리 특성

by 죄니안죄니 2025. 5. 6.

🌱 4편. 데이터 타입과 NULL 처리 특성

오라클에서 데이터를 다룰 때는 데이터 타입을 정확히 이해하고, NULL 처리 방식에 주의해야 예상치 못한 오류나 성능 저하를 방지할 수 있습니다.
이번 글에서는 주요 데이터 타입, NULL 비교의 특징, NVL/COALESCE 함수 사용법 등을 정리합니다.


📌 주요 데이터 타입 요약

타입 설명 예시
NUMBER(p,s) 숫자형. p: 전체 자리수, s: 소수점 이하 자리수 NUMBER(5,2) → 최대 999.99
VARCHAR2(n) 가변 길이 문자열. 최대 4000 byte '홍길동', 'abc123'
CHAR(n) 고정 길이 문자열. 부족한 부분은 공백으로 채움 'A '
DATE 날짜 및 시간(초 단위까지 포함) TO_DATE('2025-05-01', 'YYYY-MM-DD')
CLOB 긴 텍스트 저장용 문자 타입 1MB 이상의 설명글 등
BLOB 이진 데이터 저장 (이미지, PDF 등) 사진, 문서 파일

TIP: 문자열은 가급적 VARCHAR 대신 VARCHAR2 사용. Oracle은 VARCHAR를 ANSI 예약어로 처리함.


⚠ NULL 처리 시 주의사항

  • NULL은 값이 아님 → 비교 연산자(=, !=)로 비교할 수 없음
  • 비교 시 반드시 IS NULL, IS NOT NULL 사용

❌ 잘못된 예시


-- 결과 없음
SELECT * FROM EMP WHERE COMM = NULL;

✅ 올바른 예시


SELECT * FROM EMP WHERE COMM IS NULL;

💡 NULL 처리 함수: NVL / COALESCE

🧩 NVL 함수

  • 형식: NVL(표현식, 대체값)
  • 표현식이 NULL이면 대체값 반환

SELECT ENAME, NVL(COMM, 0) AS COMM
FROM EMP;

🧠 COALESCE 함수

  • 형식: COALESCE(expr1, expr2, ...)
  • 첫 번째 NULL이 아닌 값을 반환

SELECT COALESCE(COMM, SAL, 0) AS 보너스
FROM EMP;

TIP: COALESCE는 다중 조건 처리에 유용하며, CASE WHEN 구문을 간결하게 대체할 수 있습니다.


📐 NLS_LENGTH_SEMANTICS 설정

한글 같은 멀티바이트 문자는 1 char = 3 byte로 처리될 수 있으므로,
문자 수 단위로 제한을 걸고 싶다면 다음과 같이 설정해야 합니다.


ALTER SESSION SET NLS_LENGTH_SEMANTICS = CHAR;

📝 마무리

이번 글에서는 Oracle에서 자주 사용하는 데이터 타입과 NULL 처리 방법을 정리했습니다.
다음 글에서는 인덱스의 구조와 실전 튜닝 전략을 다루겠습니다.

댓글