본문 바로가기
IT/MS SQL

MSSQL 한글 검색이 안되는경우 ( Varchar 와 nVarchar의 차이 )

by heavenLake 2022. 10. 17.
반응형

 

 

 

SELECT * FROM tblName WHERE Name = '아무개'

이럴경우 검색이 안되고 영문만 검색되는 경우가 있습니다.

다음과 같이 검색할 문자열 앞에 N을 붙여주시면 Encoding이 UNICODE로 유지됩니다.

SELECT * FROM tblName WHERE Name = N'아무개'

 

Name 컬럼이 nVarchar이기 때문이다.

 

 

"MSSQL 의 Varchar와 nVarchar의 차이"

 

MSSQL 에서 테이블 설계 시

 

컬럼 데이터타입 중 Varchar 와 nVarchar 모두 생성이 가능하도록 되어있습니다.

 

둘 다 문자열을 저장하는 데이터 타입이지만, Varchar는 1개의 한글 문자는 2바이트, 1개의 영문 문자는 1바이트를 사용하고, nVarchar는 한글 영문 상관없이 1개의 문자당 모두 2바이트씩을 사용합니다.

 

"HowitWorks"라는 영문은 Varchar(10), nVarchar(10)으로 동일하지만,

 

Varchar는 10바이트, nVarchar는 20바이트를 사용합니다.

 

nVarchar가 더 많은 바이트를 사용하는 이유는, 유니코드를 지원하는 데이터형이기 때문입니다.

 

 

 

 

 

여기서 주의할 점이 나옵니다.

 

첫번째는,

다국어지원이 필요한 테이블이라면,

nVarchar 설계해야 합니다.

 

두번째는,

 

데이터 이행 시

nVarchar 를 Varchar로 이행하려면

자릿수를 2배정도 잡아주는것이 좋습니다.

 

ex) nvarchar(10) => Varchar(20)

 

 

참고사이트:

https://numseal.tistory.com/m/26

https://howitworks.tistory.com/m/16

반응형

댓글