|
|
Публикувано в 13.06.2018 г. 11:07:11 ч.
|
|
|

Първо, varchar(max) е заместител на текстовия тип данни, използван от Microsoft,По-стари типове полета като текст могат да бъдат анулирани в следващите версии。 Така че какъв текст може да се запази, varchar (max) определено може да се запази. Всъщност броят на героите, които може да съхранява, е много голям. 420-те милиона знака, които могат да се съхранят, са трудни за достигане, което според мен е трудно да се достигне.
Знаех само предитекст и изображение са типове данни, които може да са остарели от SQL Server, но конкретната причина не е ясна, когато прочетох днес, открих разликата между текст и varchar(max) и nvarchar(max), главно заради ограничението на операторите, текстът може да се използва само от следните функции:
| функция | Твърдение | | ДЪЛЖИНА НА ДАННИ | READTEXT | | PATINDEX | ЗАДАЙТЕ РАЗМЕР НА ТЕКСТА | | ПОДСТРИНГ | АКТУАЛЕН ТЕКСТ | | TEXTPTR | WRITETEXT | | TEXTVALID | |
Например, ако типът данни в колоната "Текст" е текст, тогава той не може да се използва за операции като "=" и "left()", като следния пример:
Създайте таблица и попълнете данните:
ако съществува (изберете * от sysobjects, където id = OBJECT_ID('[asdf]') и OBJECTPROPERTY(id, 'IsUserTable') = 1)
ТАБЛИЦА ЗА ПУСКАНЕ [ASDF]
СЪЗДАЙ ТАБЛИЦА [asdf] (
[най-интелигентни] [инт] ИДЕНТИЧНОСТ (1, 1) НЕ НУЛЕВА ,
[текст] [текст] NULL,
[varcharmax] varchar(max) NULL )
ALTER TABLE [asdf] С NOCHECK ADD CONSTRAINT [PK_asdf] ПЪРВИЧЕН КЛЮЧ НЕКЛЪСТЕРИРАН ( [inttest] )
ВКЛЮЧИ IDENTITY_INSERT [asdf]
ВМЪКНЕТЕ [asdf] ( [inttest] , [текст] , [varcharmax] ) СТОЙНОСТИ ( 1 , '1111111' , '1111111' )
ИЗКЛЮЧИ IDENTITY_INSERT [ASDF]
Изпълнете заявката:
Запитване 1: SELECT [текст]
,[варчармакс]
ОТ [testDB]. [DBO]. [ASDF]
където
[текст] ='11111' И
[varcharmax] = '1111111'
Появява се следното съобщение за грешка:
Msg 402, ниво 16, щат 1, линия 1
Типовете данни text и varchar не са съвместими по отношение на оператора equal to a.
Запитване 2: SELECT [текст]
,[варчармакс]
ОТ [testDB]. [DBO]. [ASDF]
където
[varcharmax] = '1111111'
може да работи успешно
В MS SQL2005 и по-горе добавете големи стойностни типове данни (varchar(max), nvarchar(max), varbinary(max)). Типът данни с голяма стойност може да съхранява до 2^30-1 байта данни.
Тези типове данни са поведенчески идентични с по-малките типове данни varchar, nvarchar и varbinary.
Твърдението на Microsoft е да замени предишните типове текстови, ntext и изображения с този тип данни, а съответствието между тях е:
varchar(max)-------текст;
nvarchar(max)-----ntext;
varbinary(max)----образ.
При типове данни с големи стойности е много по-гъвкаво да се работи с данни с голяма стойност, отколкото преди. Например, текстът не може да се използва "подобно" преди, но след varchar(max) няма такива проблеми, защото varchar(max) е същото като varchar(n) по поведение, така че това, което може да се използва във varcahr, може да се използва и върху varchar(max).
Освен това това поддържа използването на AFTER тригери при препратки към колони с големи стойности в вмъкнати и изтрити таблици. Текстът не е добър, накратко, след като използвам типа с големи стойности, казвам "вече не ме боли талията, краката не ме болят и мога да стигна до шестия етаж с един дъх". Какво чакате, използвайте типа с голяма стойност.
|
Предишен:Аха, аха, аха, аха.Следващ:EF (Lambda израз) прави запитвания за няколко изключения, срещани в данните
|