본문 바로가기

IT/Database

[MSSQL] 데이터 이전시 문자 데이터 변환수행 주의점


일반적으로 SQL DB 서버의 데이터 이전 결과로  문자 데이터의 변환이 자동적으로 수행됨에 따라서
해당 문자열 타입의 컬럼 데이터가 공백 문자열[' ']로 채워지는 경우가 있습니다.

입력 데이터 단에서 아무리 공백을 제거한 후 결과를 봐도 아래와 같은 결과가 나옵니다.

'abcd'<varchar(4)>        ---> 'abcd     ' <varchar(9)>

위와 공백이 채워진 경우는  SQL-SERVER 의 SET ANSI_PADDING 설정을 한 후
db 이전(insert)을 해야 합니다

SET ANSI_PADDING OFF 로 설정

그리고 또 다른 상황입니다.
일반적으로 프로시저등을 이용해서 DB 이전을 하는 경우는 위와같이 하면 문제가 없으나,
특정 툴을 사용하여 이전을 하게되면 종종 ODBC를 이용하는 경우가 많습니다.

이럴 경우 아무리 DBMS단에서 위와 같이 설정을 해도
결과는 문자열로 채워집니다. 이 해결방안으로 ODBC에서 이를 설정하는 옵션이 있습니다.




1. ANSI NULL 로 설정
2. 문자열 데이터에 대한 변환 수행을 해제


데이터 이전 주체가 ODBC 이기때문에, 상식적으로 생각해본다면 당연히 ODBC에서
설정해주는게 맞았던 같습니다.