본문 바로가기

DataBase

[Oracle] 컬럼값의 공백이 제거가 안될때

반응형


프로젝트 진행중에 기존 DB의 데이터를 마이그레이션 해야 하는 경우가 있었는데, 작업중 특이한 상황이 발생하였다.


NCHAR(6 byte)로 되어있는 컬럼을 VARCHAR2(6 byte) 컬럼으로 옮기는 작업이었는데,

컬럼의 type만 다를뿐 사이즈는 동일하였다.

당시 데이터를 옮기는 작업은 Insert Into ~ Select 구문을 이용하여 테이블간에 바로 복사를 시도하였다.


그런데 해당 구문을 이용하니 옮기려는 테이블에 컬럼 사이즈가 작다라는 오류가 발생하였다.


해당 내용을 확인해 보니 '123456' 라는 데이터가 들어있다면 '1 2 3 4 5 6' 이라고 나오는게 아닌가 ?
해당 원인에 대해 파악할 시간이 없어 중간에 있는 공백들을 replace(zipcode, ' ', '') 하려고 하였으나 전혀 공백이 제거가 되지 않았다.



해당 내용을 검색해보니 공백이 아닌 chr(0) 일 가능성이 있다고 하여 아래와 같이 처리하였더니 공백이 제거 되었다.



  replace(TO_CHAR(zipcode), chr(0), '')



시간이 날때 해당 원인에 대해 한번 더 찾아봐야 겠다.