Почему размер nvarchar по умолчанию равен 255 (MSSQL Server)?
Почему размер по умолчанию nvarchar
- Это 255 (MSSQL Server
)?
Почему не 256?
и я должен использовать nvarchar(63)
вместо nvarchar(64)
и так далее ... 127 вместо 128?
Я попытался Google этот вопрос, и я не нашел исчерпывающего ответа.
редактировать:
о размере по умолчанию: это только мое предположение. Hibernate и EclipseLink (Java persistence Framework) преобразуют строку в nvarchar (255), поэтому я подумал, что это так норматив.
1 ответов
на документация вполне понятно:
когда n не указано в определении данных или объявлении переменной заявление, длина по умолчанию равна 1. Когда n не указано при использовании функции CAST и CONVERT по умолчанию имеют длину 30.
всегда используйте спецификацию длины для этих переменных.
что касается вашего второго вопроса. Типы varchar
и nvarchar
кодировать длину значения для каждого значения. Я не уверен, что SQL Server использует 1 байт для длин до 255, а затем 2 байта для длин до 4000/8000. The max
использует 4 байта. (И все они теперь могут перейти на дополнительные страницы.) В общем случае для строк переменных символов вы должны использовать значение, которое достаточно велико для того, что вы хотите включить, поэтому вам не нужно изменять длину с помощью alter table
. Используется только необходимое хранилище для определенного значения, поэтому немного более длинное объявление не влияет спектакль.
обратите внимание, что для char
и nchar
, вы хотите кратчайшую возможную длину, потому что столбец фактически займет это пространство для хранения.