SQL 2008 - varchar (max) и типы текстовых данных

Возможный дубликат:
Текст SQL Server тип и тип данных varchar
Использование varchar (MAX) против TEXT на SQL Server

из этой статьи похоже, что у них обоих одинаковый размер: http://msdn.microsoft.com/en-us/library/ms143432.aspx

это действительно правильно? каковы настоящие отличия?

Я только что перенес некоторые данные из oracle (clob и превратил их в varchar (max), но похоже, что он все равно усек некоторые значения, должен ли я использовать вместо этого ТЕКСТ?

Спасибо!


person Madam Zu Zu    schedule 12.09.2011    source источник
comment
ТЕКСТ становится устаревшим - andrewm -developmentnotes.blogspot.com/2011/03/   -  person StuartLC    schedule 12.09.2011
comment
В этом потоке есть ответ, который вы ищете: stackoverflow.com/questions/564755/   -  person Icarus    schedule 12.09.2011
comment
stackoverflow.com/questions/834788 /   -  person NullUserException    schedule 12.09.2011
comment
какой код вы использовали для переноса данных? Я думаю, у вас есть проблема с тем, как вы это сделали, а не с типом данных.   -  person HLGEM    schedule 12.09.2011
comment
Посмотрите ссылку stackoverflow.com/q/28980502/1805776   -  person vicky    schedule 18.10.2016


Ответы (3)


Нет, вы не должны использовать TEXT. Например, он устарел с SQL Server 2005, а также вы обнаружите, что многие строковые операции не работают против него. Ни в коем случае не используйте TEXT, NTEXT или IMAGE - используйте вместо них VARCHAR(MAX), NVARCHAR(MAX) или VARBINARY(MAX).

person Aaron Bertrand    schedule 12.09.2011
comment
Проклятье Microsoft. Почему они не могут придерживаться соглашений и использовать текст вроде MySQL и Postgres? - person Henley; 18.11.2013
comment
@Henley, потому что они уже использовали текст, и это отстой. Почему MySQL не мог следовать стандарту и использовать смещение / выборку вместо этой глупой хрени с ограничениями? Грязь летит в обе стороны ... - person Aaron Bertrand; 19.11.2013
comment
нет, если будет много ветра - person shiggity; 15.09.2017

Устаревшие типы (TEXT, NTEXT, IMAGE) устарели, и их поддержка будет прекращена в будущей версии SQL Server.

Есть существенные различия в том, как вы их используете. Новые типы MAX поддерживают эффективные обновления с синтаксисом .WRITE. У устаревших типов есть загадочный набор функций для достижения того же (TEXTPTR , UPDATETEXT, _ 4_).

Новые типы MAX можно использовать в таких функциях, как REPLACE или _ 6_, любая функция, которая принимает VARCHAR(N), также будет принимать VARCHAR(MAX).

Устаревшие типы не поддерживают неявное преобразование, которое поддерживают типы MAX, см. Преобразования типов данных < / а>.

Некоторые функции движка работают с типами MAX, но не с устаревшими, например. онлайн-операции (в SQL 11 они поддерживают таблицы с большими двоичными объектами)

person Remus Rusanu    schedule 12.09.2011

Связанная статья касается только распределения места. Как минимум, знайте, что типы данных text, ntext и image будут удалены из будущих выпусков. SQL Server, поэтому для новых таблиц используйте varchar (max), nvarchar (max) или varbinary (max).

Не менее важно как взаимодействовать с этими ценностями. Вы бы предпочли использовать стандартный столбец = 'действительно длинное значение' или UPDATETEXT и другие менее распространенные операции для работы со столбцом из-за типа данных?

person billinkc    schedule 12.09.2011