Максимальная длина varchar в sql - PullRequest
1 голос
/ 16 мая 2011

Привет. Какая максимальная длина varchar в Transact-SQL и MySQL?Я вижу, что многие люди используют varchar(max) в TSQL.Как долго это?Какое эквивалентное выражение varchar(max) в MySQL?

Спасибо

Ответы [ 2 ]

5 голосов
/ 16 мая 2011

Первым портом вызова для таких вопросов всегда должно быть руководство.

  • Руководство по MySQL для VARCHAR здесь

  • руководство по T-SQL для VARCHAR здесь

3 голосов
/ 16 мая 2011

В MySQL максимальный размер строки составляет 64 КБ (65535).

Я не знаю о TSQL, поэтому я провел небольшое исследование:

В SQL Server2000 и SQL Server 7, длина строки не может превышать 8000 байт.Это означает, что столбец VARBINARY может хранить только 8000 байтов (при условии, что это единственный столбец в таблице), столбец VARCHAR может хранить до 8000 символов, а столбец NVARCHAR может хранить до 4000 символов (2 байта на символ Юникода).Это ограничение связано с размером внутренней страницы 8 КБ, который SQL Server использует для сохранения данных на диск.

Чтобы хранить больше данных в одном столбце, необходимо использовать типы данных TEXT, NTEXT или IMAGE (BLOB).которые хранятся в коллекции страниц данных объемом 8 КБ, которые отделены от страниц данных, которые хранят другие данные в той же таблице.Эти страницы данных расположены в виде структуры B-дерева.С BLOB сложно работать и манипулировать ими.Их нельзя использовать в качестве переменных в процедуре или функции, и их нельзя использовать внутри строковых функций, таких как REPLACE, CHARINDEX или SUBSTRING.В большинстве случаев вам необходимо использовать команды READTEXT, WRITETEXT и UPDATETEXT для управления BLOB-объектами.

Чтобы решить эту проблему, Microsoft представила типы данных VARCHAR (MAX), NVARCHAR (MAX) и VARBINARY (MAX)в SQL Server 2005. Эти типы данных могут содержать одинаковое количество больших двоичных объектов (2 ГБ), и они хранятся на страницах данных того же типа, что и для других типов данных.Когда данные в типе данных MAX превышают 8 КБ, используется страница переполнения.SQL Server 2005 автоматически назначает индикатор переполнения странице и знает, как управлять строками данных так же, как он манипулирует другими типами данных.Вы можете объявлять переменные типов данных MAX внутри хранимой процедуры или функции и даже передавать их как переменные.Вы также можете использовать их внутри строковых функций.

Microsoft рекомендует использовать типы данных MAX вместо больших двоичных объектов в SQL Server 2005. На самом деле большие двоичные объекты в будущих выпусках SQL Server устарели.

http://www.teratrax.com/articles/varchar_max.html

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