2011-08-03 3 views
2

MSDN has this to say :nvarchar (4001)? 주제에

은 nvarchar [(N은 | 최대)]

가변 길이 유니 코드 문자 데이터. ncan은 1에서 4,000 사이의 값일 수 있습니다. max는 최대 저장 크기가 2^31-1 바이트임을 나타냅니다. 저장 영역 크기 (바이트)는 입력 된 문자 수의 2 배 + 2 바이트입니다. 입력 된 데이터의 길이는 0 자일 수 있습니다. nvarchar의 ISO 동의어는 다양한 국가 별 문자 및 다양한 국가 별 문자입니다.

이렇게하면 혼란 스럽습니다. 저는 컬럼을 1 - 4000 long 또는 2147483647 long으로 정의 할 수 있지만 inbetween는 없습니다. 내 이해가 맞습니까? 왜 그 사이에 가치에 대해 명시 할 수 없습니까?

답변

4

NVARCHAR(MAX)은 다른 모든 것을 포함합니다 (은 단지20 억 문자). 4,000 자 이상이 필요한 경우 데이터가 가장 확실하게 페이지 외부로 표시되므로 4,001 자, 10,000 자 또는 10,000,000자를 사용했는지 여부는 문제가되지 않는 한 문제가됩니다. 필요한 공간 만 차지하므로, (2 billion characters - the length of your actual string)을 낭비하고 있다고 생각하지 마십시오.

+0

+1 - 그는 또한 'MAX'는 색인 또는 제약 조건이 없음을 알고 있어야합니다. – JNK

+1

글쎄, 450보다 큰 값은 색인에 900 바이트 제한 때문에 문제를 일으킬 수 있습니다. – spender

+0

@spender. 인덱스가 인덱스에 키 열로 참여해야하는 경우에만 관련이 있습니다. 귀하의 진술은 아무도 'NVARCHAR (> 450)'선언을해서는 안된다는 것을 암시하는 것처럼 보입니다. –

1

4000 문자 이하는 저장 영역 측면에서 하나의 동작을 가지며 MAX는 저장 측면에서 다른 동작을합니다. 그리고 정말로 1M 길이의 문자들에 대해 문자열 길이 계산을 강요하기를 원하지 않으십니까? 필자는 현재 4000 자까지는 테이블에 저장되고 MAX는 테이블 외부에 저장된다는 사실을 알고 있습니다.

또한 NVARCHAR (MAX) 및 VARCHAR (MAX)는 text 및 ntext의 대체 코드입니다.

+0

필자는 가능한 경우 MAX가 행에 저장되도록 명시 적으로 지정할 수 있습니다. –

2

Max은 4001 ~ 1073741823 사이의 값을 허용합니다 (실제 크기의 약 2 배 길이입니다).

기본적으로 4000자를 초과하는 문자는 MAX이어야합니다.

관련 문제