본문 바로가기

공부/DATABASE

[MSSQL] varchar / nvarchar 차이

728x90

차이를 알아보기 전,

Error

위와 같은 오류로 인해 데이터들의 크기(길이)를 살펴 보며 두 데이터 타입의 차이점에 대한 궁금증이 생겨 글을 쓰게 되었다.

 

해당 오류는 데이터 길이보다 넣으려는 데이터 길이가 길 때 발생하는 오류로, 해결방법은 아래와 같다.

1. 데이터 길이에 맞는 값을 넣는다. (넣으려는 데이터 길이 축소)
2. 데이터 길이를 늘린다. (칼럼 길이 확장)

넣으려는 데이터 칼럼이 다양하여 칼럼마다 len()함수를 사용하여 데이터 길이를 확인하였다.

그 중 한 칼럼의 길이는 12로 nvarchar 형을 띄고 있었고, 넣으려는 데이터 길이는 7이었다.

 

varchar와 nvarchar의 차이점을 모르는 경우 문제 없어보이는 데이터지만 nvarchar타입이라는 것을 확인하여야 한다.

 

varchar 와 nvarchar의 차이

  varchar nvarchar
공통점 가변형 문자열 저장
지원 언어 영문 또는 테이블에 설정된 기본 언어 지원 유니코드 지원
(영문, 숫자) 데이터 크기 1byte 2byte
(한글, 한자) 데이터 크기 2byte


위 표에서 볼 수 있듯 varchar와 nvarchar는 모두 가변형 문자열을 저장할 때 쓰이는 데이터 타입이다.

차이점이라면 varchar는 영문 이나 숫자에 대해 1byte, 한글이나 한자에 2byte를 가지지만

nvarchar는 어떤 데이터든 2byte로 동일하다는 점이다.  

 

따라서 넣으려던 데이터 길이는 7이었지만 nvarchar 형이라는 특성 상 한 글자당 2byte를 가져 총 14byte로 데이터 길이(12)를 벗어나게 되어 오류가 발생하였다.

 

* nvarchar의 길이는 /2 로 생각하기

 

728x90
반응형

'공부 > DATABASE' 카테고리의 다른 글

데이터 무결성과 트랜잭션  (0) 2021.06.25
[MS-SQL] 기초 문법  (0) 2021.06.25
[Oracle DB] Foreign key (외래키) 추가, 삭제  (0) 2021.04.30