테이블 생성시 데이터 타입 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 는 안되는구나 ㅠㅠ
'SQL Server' 카테고리의 다른 글
Full Text Catalog 채우기가 동작하지 않을 경우 (0) | 2022.10.25 |
---|---|
Always Encrypted char, nchar 데이터 타입 공백 검색 이슈 (0) | 2022.09.02 |
Always Encrypted (0) | 2022.09.02 |