Я хотел бы знать, что является максимальным размером varchar
в SQL Server 2000. Хотя я где-то гугл, было написано 8000 символов и где-то было написано 8060 байт. Какой из них правильный?Максимальный размер varchar (max) в SQL Server 2000
ответ
Насколько я помню, это 8000 символов.
Для NVARCHAR это 4000.
Varchar в 8000 и NVARCHAR 4000.
Вот ссылка VARCHAR MSDN:
http://msdn.microsoft.com/en-us/library/aa258242(SQL.80).aspx
Есть 8000 char = 8000 байт в sql ???? – Kumar
@Kumar: да, для VARCHAR, 1 символ = 1 байт; для NVARCHAR, 1 символ = 2 байт –
Это немного сложнее, чем это. Короткая версия заключается в том, что varchar и nvarchar не используют пространство, пока вы на самом деле не разместите данные. –
Максимальный размер VARCHAR (макс) велико (2GB или 2Gchars, я думаю). Максимальное значение, которое вы можете указать для n в varchar (n), равно 8000, а для nvarchar - 4000.
Нет varchar (max) в SQL 2000 – MartW
Вы правы, но тогда вопрос недействителен. Вторая часть моего ответа по-прежнему сохраняется – erikkallen
Страница данных SQL Server имеет 8k: 8192 байта. Из этого часть зарезервирована для заголовка страницы, оставляя 8060 байтов максимальной величиной, которую может иметь одна строка. Строка varbinary (n), varchar (n) и nvarchar (n) не может превышать 8000 байт, что означает, что varchar (8000) - максимальная длина Ascii, а nvarchar (4000) - максимальная длина Unicode (поскольку Unicode хранит каждый символ по 2 байта).
Лучшее объяснение всех этих деталей происходит от Inside the Storage Engine: Anatomy of a page.
+1 Маленький лакомый кусочек: Unicode не сохраняет каждый символ в 2 байтах. Это зависит от кодировки. UTF-8 и UTF-16 являются кодировками переменной длины, UTF-32 является единственным фиксированным размером, который я знаю. Существуют и другие кодировки (UCS-2, UTF-7). Внутри Microsoft обычно использует UTF-16, где размер по умолчанию для символа равен 2 байтам. Это справедливо для по крайней мере всех продуктов на базе .NET и для SQL Server. – Abel
@abel: SQL Server [использует кодировку UCS-2LE] (http://msdn.microsoft.com/en-us/library/ms189617 (v = sql.105) .aspx), которая составляет ровно 2 байта на символ. Я согласен с тем, что «Unicode», как указано в сообщении, не имеет строго 2 байта на символ. –
Да, вы правы на UCS-2, я все время забываю об этом, это одна из моих главных проблем, так как она допускает только символы BMP. Tx для указания этого :) – Abel
Is 8000 char = 8000 байт в sql ???? – Kumar
@Kumar: ** да! ** Для 'varchar' это 1 char = 1 байт, для' nvarchar' это 1 char = 2 байт –