피드로 돌아가기
PostgreSQL 22036 Error: Causes and Solutions Complete Guide
Dev.toDev.to
Database

PostgreSQL 22036 에러 해결을 통한 JSON 데이터 타입 안정성 확보

PostgreSQL 22036 Error: Causes and Solutions Complete Guide

umzzil nng2026년 6월 18일4intermediate

Context

PostgreSQL 12부터 도입된 SQL/JSON Path 기능 사용 중 숫자 연산 대상이 비숫자 타입(String, Boolean, Null 등)일 때 발생하는 22036 에러 분석. 외부 API 연동 및 레거시 시스템의 불일치한 데이터 타입 저장으로 인한 런타임 예외 발생 상황.

Technical Solution

  • .double() 메서드 활용을 통한 JSON Path 내 String 타입의 즉각적인 Numeric 변환 처리
  • 와일드카드([*]) 및 특정 인덱스 지정으로 Array 전체에 대한 산술 연산 시도 방지 및 원소별 접근 구조 설계
  • JSON Path 필터 표현식(? (@ != null))을 통한 Null 및 비정상 타입의 사전 필터링 체계 구축
  • jsonb_typeof() 함수 기반의 Guard Clause를 SQL 레벨에 적용하여 타입 불일치로 인한 쿼리 중단 방지
  • PL/pgSQL 기반의 safe_json_numeric 헬퍼 함수를 구현하여 Exception Handling 기반의 기본값 반환 로직 표준화
  • CHECK 제약 조건 설정을 통한 Insert 시점의 JSON 데이터 타입 강제 검증 프로세스 도입

1. 외부 유입 JSON 데이터의 숫자 필드에 대해 `.double()` 변환 또는 `::numeric` 캐스팅 적용 여부 검토

2. JSON Path 연산 전 `? (@ != null)` 필터를 통한 데이터 정제 단계 추가

3. 런타임 에러 방지를 위한 `jsonb_typeof()` 기반의 타입 검증 로직 설계

4. 데이터 무결성 보장을 위해 테이블 생성 시 `CHECK` 제약 조건으로 JSON 내부 타입 강제

원문 읽기