Найти длину столбца varchar (max) - PullRequest
3 голосов
/ 02 февраля 2012

Я пытаюсь найти длину столбцов строки, указанных в таблице.

Я делаю это с помощью CHARACTER_MAXIMUM_LENGTH из infomation_schema.columns.

Однако для varchar(max) возвращается -1. Мне было интересно, должен ли я возвращать максимально допустимую длину всякий раз, когда столбцы varchar(max), nvarchar(max) и т. Д. Присутствуют в таблице?

1 Ответ

1 голос
/ 12 октября 2012

Да, максимальная длина столбца varchar (max) или nvarchar (max) не ограничена.Предел хранения составляет 2 ГБ (2 ^ 31 -1 байт).Он ведет себя как обычный столбец varchar / nvarchar, если данные меньше 8 КБ.Затем, когда данные для отдельной строки превышают 8 КБ, они сохраняются как значение text / ntext большого объекта.Вы можете думать об этом как обертка для двух типов данных.

Однако максимальная длина символа не равна 2000000000.Это 2147483645 для столбца varchar (max) и 1073741822 для столбца nvarchar (max).Это связано с тем, что nvarchar имеет 2 байта на символ, а varchar - 1 байт на символ, а для хранения длины данных переменного столбца требуется 2 байта.

Я не думаю, что какие-либо дополнительные метаданные вычитаются из ограничения в 2 ГБ, но я прокомментирую завтра, если найду что-нибудь еще.

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