기본 콘텐츠로 건너뛰기

PostgreSQL | CASE문 빈 문자열(Empty String) 널(Null) 처리

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 처리로 고민 중이라면 위 패턴을 그대로 활용해 보시길 권장드립니다.

댓글