NVARCHAR (4001)? - PullRequest
       12

NVARCHAR (4001)?

2 голосов
/ 03 августа 2011

В MSDN сказано: по теме:

nvarchar [(n | max)]

Данные символов Unicode переменной длины.n может быть значением от 1 до 4000.max указывает, что максимальный размер хранилища составляет 2 ^ 31-1 байт.Размер хранилища в байтах в два раза превышает количество введенных символов + 2 байта.Введенные данные могут быть длиной 0 символов.Синонимы ISO для nvarchar - это разные национальные символы и разные национальные символы.

Меня это смущает.Я могу определить столбец длиной 1 - 4000 или длиной 2147483647, но между ними нет ничего?Правильно ли мое понимание?Почему я не могу четко указать значения между ними?

Ответы [ 3 ]

4 голосов
/ 03 августа 2011

NVARCHAR(MAX) охватывает все остальное (не , а 2 миллиарда символов).Если вам нужно более 4000 символов, данные, скорее всего, будут вне страницы, так что в отношении поведения не имеет значения, если вы использовали 4 001 символ, 10 000 символов или 10 000 000 символов.Он занимает только необходимое вам пространство, поэтому не думайте, что вы тратите (2 billion characters - the length of your actual string).

2 голосов
/ 03 августа 2011

Max будет принимать значения от 4001 до 1073741823 (имейте в виду, что размер хранилища приблизительно в 2 раза больше длины фактической строки).

Ограничение состоит в том, что все, что превышает 4000 символов, должно быть MAX.

1 голос
/ 03 августа 2011

Поскольку 4000 символов или менее имеют одно поведение с точки зрения хранения, а MAX имеет другое поведение с точки зрения хранения.И вы действительно не хотите начинать вычислять длину строки для вещей длиной в 1 миллион символов?Насколько я понимаю, до 4000 символов хранится в таблице, а MAX хранится вне таблицы.

Также NVARCHAR (MAX) и VARCHAR (MAX) являются заменами для текста и ntext.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...