Я новичок в этой концепции nvarchar(MAX)
. Сколько символов в нем будет?
Ответы:
Максимум. емкость составляет 2 гигабайта пространства - так что вы смотрите на чуть более 1 миллиарда 2-байтовых символов, которые уместятся в NVARCHAR(MAX)
поле.
Используя более подробные номера другого ответа, вы сможете сохранить
(2 ^ 31 - 1 - 2) / 2 = 1'073'741'822 double-byte characters
1 billion, 73 million, 741 thousand and 822 characters to be precise
в вашем NVARCHAR(MAX)
столбце (к сожалению, эта последняя половина символа потрачена впустую ...)
Обновление: как отметил @MartinMulder: любой столбец символов переменной длины также имеет 2-байтовые накладные расходы для хранения фактической длины, поэтому мне нужно было вычесть еще два байта из 2 ^ 31 - 1
длины, которую я ранее оговорил - таким образом, вы можете сохранить на 1 символ Unicode меньше, чем Я утверждал раньше.
VARCHAR(MAX)
, если вам не нужна двухбайтовая поддержка азиатских, арабских или кириллических языков. Используйте, (N)VARCHAR(x)
если вы знаете, что строка никогда не будет длиннее x символов (не используйте NVARCHAR(MAX)
для имени - используйте NVARCHAR(50)
или что-то еще, что имеет для вас смысл)
Из char и varchar (Transact-SQL)
varchar [(n | max)]
Символьные данные переменной длины, отличные от Unicode. n может принимать значения от 1 до 8000. max указывает, что максимальный размер хранилища составляет 2 ^ 31-1 байта. Размер хранилища - это фактическая длина введенных данных + 2 байта. Вводимые данные могут иметь длину 0 символов. Синонимы ISO для varchar - это символьные или символьные.
2 ^ 31-1 байт. Итак, чуть меньше 2 ^ 31-1 символов для varchar (max) и половина - для nvarchar (max).