2012-06-10 3 views
3

저는 Microsoft SQL을 처음 사용합니다. 나는 Microsoft SQL 서버에 텍스트를 저장할 계획이며 특별한 국제 문자가있을 것입니다. 유니 코드에 고유 한 "데이터 유형"이 있습니까? 아니면 유니 코드 번호 (예 : \ u0056)에 대한 참조로 내 텍스트를 인코딩하는 편이 낫습니다.유니 코드 데이터 형식 (SQL)

+2

유니 코드를 nvarchar와 함께 저장하십시오. - http://stackoverflow.com/questions/144283/what-is-the-difference-between-varchar-and-nvarchar – codingbiz

답변

11

Nvarchar/Nchar (MSDN link)을 사용하십시오. 이전에는 Ntext 데이터 유형이 있었지만 지금은 Nvarchar으로 대체되었습니다.

열은 비 유니 코드 사본 (charvarchar)보다 두 배 많은 공간을 차지합니다. "수동"그들에 삽입 할 때

다음에, 유니 코드 텍스트의 표시하는 N를 사용

INSERT INTO MyTable(SomeNvarcharColumn) 
VALUES (N'français') 
0

테이블 및 문자 집합의 문자 집합 기능이 데이터베이스에 지정되어 있고 데이터베이스에 유니 코드 데이터 정렬이있는 경우 테이블 내부의 문자열은 유니 코드입니다. 문자열 열뿐 아니라 유니 코드 문자열을 저장할 수있게하려면 nvarchar 또는 nchar 데이터 형식을 사용해야합니다. 그러나이 기능은 데이터베이스에 utf8 또는 유니 코드 문자 집합이나 데이터 정렬이있는 경우에 사용할 수 있습니다. 자세한 내용은이 링크를 참조하십시오. Unicode and SQL Server

+0

링크가 끊어졌습니다. 업데이트 된 참조가 있습니까? –

+0

도움이 되나요? https://docs.microsoft.com/en-us/sql/t-sql/data-types/nchar-and-nvarchar-transact-sql –

+0

그게 내가 읽은 것입니다. 답이 맞다고 생각되면 –

2

사람들은 삽입 데이터 조작에서 유니 코드를 강제로 다음 코드를 사용하여 성공을 있었다.

INSERT INTO <table> (text) values (N'<text here>) 

1

5

특수 국제 문자 말, 당신은 무엇을 의미합니까? 특수한 의미로 흔하지는 않지만 가끔씩 발생하는 경우 nvarchar의 오버 헤드는 매우 많은 수의 행이나 많은 인덱싱을 사용하는 테이블에서 사용자 환경에 맞지 않을 수 있습니다.

필자는 적절한 경우 유니 코드를 사용하기로했으나 적절한시기를 이해하는 것이 중요합니다.

다른 암시 코드 페이지 (동일한 데이터베이스의 일본어 및 중국어)와 데이터를 혼합하거나 국제화 및 현지화를 원할 경우 열을 유니 코드로 지정하고 nvarchar 데이터 형식을 사용하고 그거 괜찮아. 유니 코드는 마술처럼 모든 정렬 문제를 해결하지 않습니다.

주로 ASCII를 사용하지만 일부 외래 문자를 저장한다는 것을 알고 있다면 varchar에 UTF-8 데이터 또는 HTML 인코딩 데이터를 저장하십시오. 데이터가 모두 일본어이고 코드 페이지 932 (또는 다른 단일 코드 페이지) 인 경우에도 varchar에 2 바이트 문자를 저장할 수 있지만 여전히 2 바이트를 차지합니다. 필자가 이미 DBCS 데이터 정렬을 사용하고있을 때 국제 문자는 더 이상 "특별"하지 않습니다. 쿼리 및 다른 데이터 흐름에서 이러한 열을 처리 할 때는 데이터 저장소뿐 아니라 모든 인덱스와 작업 집합이 필요합니다.

모든 문자 데이터가 nvarchar 여야한다는 블랭킷 규칙을 작성하지 마십시오. 코드 또는 식별자 인 많은 열에 대해서는 낭비입니다.

데이터의 유형은 무엇입니까 :

당신이 열이 때마다 같은 질문을 통해 이동?

범위는 무엇입니까?

NULL을 사용할 수 있습니까?

크기 제한은 얼마입니까?

나쁜 데이터가 처음부터 들어가는 것을 막기 위해 지금 적용해야하는 제약이 있습니까?

관련 문제