Error

[ERROR][Oracle] java.sql.SQLSyntaxErrorException: ORA-00932: 일관성 없는 데이터 유형: -이(가) 필요하지만 CLOB임

오선지♬ 2025. 8. 4. 13:47
728x90
반응형
ORA-00932: 일관성 없는 데이터 유형: -이(가) 필요하지만 CLOB임

컬럼이 CLOB 타입이라서 정렬을 직접 할 수 없습니다.

(Oracle은 CLOB 타입을 ORDER BY, GROUP BY 등에서 바로 사용할 수 없어요.)

 

 

해결 방법

  • CLOB을 VARCHAR로 캐스팅
    만약 데이터가 4000자 이하라면 DBMS_LOB.SUBSTR 또는 CAST로 잘라서 정렬해야 합니다.여기서 4000은 잘라낼 길이, 1은 시작 위치예요. (VARCHAR2 최대 4000자까지 정렬 가능)
  •  
ORDER BY M.TENANT_CD, DBMS_LOB.SUBSTR(M.SP_MEMO, 4000, 1) ASC, M.INS_DT DESC

  • SP_MEMO를 단순 조회용으로만 사용
    정렬이 꼭 필요하지 않다면, 그냥 ORDER BY에서 빼세요.

  • CLOB 컬럼을 VARCHAR 컬럼으로 변환
    만약 자주 정렬/검색해야 하는 컬럼이라면, 테이블에 SP_MEMO_SORT 같은 VARCHAR2 컬럼을 추가해서 동기화 시키고, 그 컬럼으로 정렬하는 방법이 일반적입니다.
728x90
반응형