PostgreSQL CASE문으로 빈 문자열(Empty String)과 NULL 처리 방법
INSERT · UPDATE 시 공백 데이터 정규화 실무 가이드
(최종 업데이트: 2025년 12월 24일)
PostgreSQL을 사용하다 보면 빈 문자열(Empty String)과 NULL을 함께 처리해야 하는 상황이 자주 발생합니다.
특히 INSERT 또는 UPDATE 쿼리에서 사용자 입력값이 ''(공백)인지, NULL인지 구분 없이 들어오는 경우, 데이터 정합성을 위해 명확한 처리 로직이 필요합니다.
📌 PostgreSQL 핵심 포인트
- PostgreSQL에서는 빈 문자열('')과 NULL은 서로 다르다
- Oracle과 달리 자동으로 NULL 변환이 되지 않는다
- 명시적인 처리 로직이 반드시 필요하다
💡 COALESCE 함수로 NULL 처리
COALESCE 함수는 값이 NULL일 경우 지정한 기본값으로 치환할 때 사용합니다.
-- col1이 NULL일 경우 빈 문자열로 치환 COALESCE(col1, '')
단, 이 방식은 NULL → '' 변환만 가능하며, 빈 문자열을 NULL로 바꾸지는 못합니다.
🚗 CASE문으로 빈 문자열과 NULL 동시에 처리
실무에서는 NULL과 ''을 모두 NULL로 통일하는 경우가 많습니다.
이럴 때는 CASE + COALESCE 조합이 가장 안전합니다.
CASE WHEN COALESCE(col1, '') = '' THEN NULL ELSE col1 END
📍 처리 로직 설명
- col1이 NULL이면 COALESCE로 '' 변환
- 결과가 ''이면 NULL로 저장
- 그 외 값은 그대로 유지
🅿️ UPDATE 쿼리 실전 예제
아래는 PostgreSQL UPDATE 구문에서 빈 문자열과 NULL을 동시에 정리하는 실무 예제입니다.
UPDATE XXX_TABLE
SET col1 =
CASE
WHEN COALESCE(col1, '') = '' THEN NULL
ELSE col1
END
WHERE id = #{id};
이 방식은 데이터 정규화, 검색 성능, 인덱스 효율 측면에서도 매우 유리합니다.
⚡ 정리
- PostgreSQL은 빈 문자열과 NULL을 구분한다
- COALESCE는 NULL 처리에 유용하다
- CASE + COALESCE 조합이 가장 안전한 실무 패턴이다
- INSERT / UPDATE 시 데이터 품질 관리에 필수
PostgreSQL에서 빈 문자열 NULL 처리로 고민 중이라면 위 패턴을 그대로 활용해 보시길 권장드립니다.
댓글
댓글 쓰기