'노바르처' 란 무엇을 의미합니까?
'', '', '는 어떤 차이가 챨 네처 노바르처 SQL Server 의 varchar' 및 '?'
그냥 선택해제하여 상승했다. 또는 요약.
'' 가 '와' 노바르처 네처 걸릴 수 있으므로 현명한 두 배 더 많은 저장공간을 사용하기 위해 필요한 경우에만 유니코드 지원.
지금까지 모든 답을 나타내는 ',' '는' 는 varchar 싱글바이트 노바르처 더블바이트. 첫 번째 부분에서는 사실은 이 달려 collation 아래와 같이.
DECLARE @T TABLE
(
C1 VARCHAR(20) COLLATE Chinese_Traditional_Stroke_Order_100_CS_AS_KS_WS,
C2 NVARCHAR(20)COLLATE Chinese_Traditional_Stroke_Order_100_CS_AS_KS_WS
)
INSERT INTO @T
VALUES (N'中华人民共和国',N'中华人民共和国'),
(N'abc',N'abc');
SELECT C1,
C2,
LEN(C1) AS [LEN(C1)],
DATALENGTH(C1) AS [DATALENGTH(C1)],
LEN(C2) AS [LEN(C2)],
DATALENGTH(C2) AS [DATALENGTH(C2)]
FROM @T
되돌려줍니다
참고로, '아직' 문자를 표현할 수 있는 '이' 와 '国 华 VARCHAR' 버전 및 pokemonsilver. 자동으로 '?' 로 대체되었다.
실제로 중국 있을 수 있는 문자 아직 아무 레프라센테드 싱글바이트 의해 그 collation. 일반적인 서유럽어 유일한 싱글바이트 문자는 ASCII 설정되었습니다.
이 때문에 삽입 (X) '에서' 노바르처 열 수 있다 'varchar (X)' 를 열 [절단 실패할 수 있는 오류] (https://dba.stackexchange.com/questions/123379/string-or-binary-data-would-be-truncated-error-copying-nvarchar10-to-char10/123403 # 123403) (여기서 X 는 동일한 번호를 모두 인스턴스들도).
SQL Server 2012년 자도으로 SC (보조 문자) 를 지원하는 '정렬' UTF-16. 이 단일 '정렬' 문자 2 개 또는 4 개의 바이트입니다 노바르처 걸릴 수 있습니다.
네처 및 챨 거의 동일한 방식으로 운영할 수 있듯이 서로 노바르처 및 varchar. 저장 / 노바르처 네처 유일한 차이점은 유니코드 문자 (에센셀 사용해야 하는 경우 확장 문자 세트를) 라 varchar 않습니다.
유니코드 문자 때문에 더 필요한 스토리지, 네처 / 노바르처 두 배 더 많은 공간을 차지할 필드 (예를 들어 이전 버전에서는 SQL Server 는 노바르처 필드는 최대 크기를 dl4000).
이 문제가 복제본입니다 이 번호요.
그냥 좀 더 추가할 수 있습니다.
따라서 & # 39 에 의해, 여기서는 너회의 데이터세트를 필터링하려면 nchar& # 39. 필드 트림 분리하십시오 공간을 사용할 수 있습니다. E. g. 네처 필드이므로 브랜드 상점 (10) 라는 단어를 일했습니다. 새롭게 6 스페이스 오른쪽에 말을해야합니다. 따라서 필터링부터 할 때, 표현식에서는 검토완료: , 트림 (필드! 브랜드리발루) = " NIKE".
따라서 누군가가 거기에 대한 희망이 조금 어려움을 겪고 있었기 때문에 이 이제 막!
시도 및 교정합니다 요약하십시오 내 기존 대답:
첫째, '챨' 와 '' 은 항상 flfile. 저장 공간, 네처 일정한 공간을 사용할 수 있는 경우에도 문자열을 저장할 수 있는 반면, 작습니다 varchar '와' '가 아니라' 앞으로 저장 공간이 있는 그대로 사용하여 노바르처 저장하는 데 필요한 문자열 (string 저장하였습니다 연봉이 2 바이트의 구성형 오버헤드에 길이). 그래서, " 너희에게베풀어진 var"; 같이 variable" 고말은 ", 변수, 공간.
즉, 두 번째 주요 가리키십시오 네처 '저장' 이해 '와' 노바르처 사용하는 반면, '당' 및 '2 바이트 문자 정확히요 문장열 챨 varchar' 이 되는 일반적으로 사용하는 인코딩입니다 검은선을 collation 코드 페이지 당 정확히 1 바이트 문자 (단, 몇 가지 예외가 있기는 하지만, 아래 참조). 당 2 바이트 문자, 매우 다양한 문자를 사용하여 저장할 수 있으며, 따라서 여기서 기억해야 할 것은 '와' '기본' 네처 노바르처 경향이 훨씬 더 잘 할 수 있는 인터내셔널리제이션 지원, 원할 때 선택할 수 있는 것이다.
지금 보다 몇 점.
첫째, 네처 UCS-2 를 사용하여 데이터 저장 '열' '와' 노바르처 항상. 즉, 모든 유니코드 문자를 사용하며 문자는 정확히 두 개의 바이트입니다 호스트당 BMP (Basic Multilingual Plane) 에 의해 '' 현장 '또는' 노바르처 네처 저장할 수 있습니다. 그러나 이 모든 것은 이런 유니코드 문자 저장할 수 있다. 예를 들어, 위키백과, 이집트 상형 문자 코드 포인트를 따르면 BMP 의 밖에 있다. 이에 따라 가지 유니코드 문자열을 유니코드 인코딩을 UTF-8 로 표현할 수 있는 SQL Server 및 기타 저장됩니까 수 없는 '네처 노바르처 쓴' 또는 '' 필드, 그리고 문장열 신성문자 약간만이라도 살해하였나이다. 다행히 사용자의 쓰지 않고 있지만, 아마도 그 스크립트입니다 it& don& # 39 의 something to # 39 주지하시기 바랍니다!
또 다른 흥미로운 점이 많다고 하지만 varchar '2' 와 '사용할 수 있는 것은' 포스터 강조표시된 챨 필드용 특정 문자의 경우 문자 코드 페이지 당 바이트입니다 collation 필요합니다. (마틴 스미스 등이 이 비헤이비어는 Chinese_Traditional_Stroke_Order_100_CS_AS_KS_WS 일곱방과 훌륭한 모범이 방법을 보여 준다. 체크아웃합니다.)
[1]: # Supplementary_Characters http://msdn.microsoft.com/en-us/library/ms143726.aspx
'네처 [(n)]' * (national 캐릭터)
'n' 는 문자열 길이를 1 부터 4,000 값이어야 합니다.
스토리지 크기는 두 배 'n' 바이트입니다.
'노바르처 [(n 최대)]' * (국가 문자 다양한.)
'n' 는 문자열 길이를 1 부터 4,000 값을 수 있습니다.
'맥스' 가 있음을 최대 스토리지 크기는 2 ^ 31 1 바이트입니다 (2gb).
2 배 크기 (바이트) 는 실제 데이터 길이를 스트로지 입력되었는지 + 2 바이트
'가 아닌' 고정 길이, string 데이터.
'n' 는 문자열 길이를 1 부터 8,000 및 가치가 되어야 한다.
스토리지 크기는 'n' 바이트입니다.
차이를 다음과 같습니다.
또 다른 차이는 길이. 네처 및 노바르처 모두 만들 수 있는 최대 4,000 자입니다. 및 챨 및 varchar 만들 수 있는 최대 8000 자입니다. 그러나 SQL Server 의 varchar (최대) [명사] 사용할 수도 있습니다 처리할 수 있는 최대 2,147,483,648 자입니다. (4 바이트 서명됩니다 2 기가바이트,) 은 정수).