테이블 생성시 데이터 타입 char(n), nchar(n) 으로 생성한 컬럼의 경우 입력한 데이터의 길이거 n보다 짧은 경우 뒤에 공백이 들어간다.

예) char(10) 에 'A' 를 넣으면 'A          ' 가 들어간다.

 

문제는.. char(10) 에 'A' 를 넣어야되는 상황이 발생했다.

 

set ansi_padding off 를 설정하면 char(n) 데이터 타입에도 공백이 들어가지 않는다. 

https://docs.microsoft.com/ko-kr/sql/t-sql/statements/set-ansi-padding-transact-sql 

 

-- 테스트 테이블 생성 
create table tb_test (
   colA char(10),
   colB varchar(10),
   colC nchar(10),
   colD nvarchar(10)
);

-- 테스트 데이터 입력 
insert into tb_test (colA, colB, colC, colD) values ('A','B','C','D');

-- 데이터 확인 
select 
	colA + '*',
	colB + '*',
	colC + '*',
	colD + '*'
from tb_test;

char(10), nchar(10) 은 공백이 들어간다. 

 

set ansi_padding off 테스트 

-- 테스트 테이블 삭제 
drop table tb_test;

set ansi_padding off;
-- 테스트 테이블 생성 
create table tb_test (
   colA char(10),
   colB varchar(10),
   colC nchar(10),
   colD nvarchar(10)
);
-- 테스트 데이터 입력
insert into tb_test (colA, colB, colC, colD) values ('A','B','C','D');
-- 데이터 확인 
select 
	colA + '*',
	colB + '*',
	colC + '*',
	colD + '*'
from tb_test;

char(10) 은 해결되었으나 nchar(10) 은 공백이 들어간다. 

 

BOL 을 보면.. nchar 는 안되는구나 ㅠㅠ

 

+ Recent posts