|
|
Zveřejněno 13.06.2018 11:07:11
|
|
|

Za prvé, varchar(max) je náhrada za textový datový typ používaný Microsoftem,Starší typy polí, jako například text, mohou být v následujících verzích zrušeny。 Takže jaký text lze uložit, varchar (max) určitě zachránit. Ve skutečnosti je počet znaků, které může uložit, velmi velký. 420 milionů znaků, které lze uložit, je těžko dosažitelných, což podle mě je těžké dosáhnout.
Věděl jsem to jen předtímtext a obraz jsou datové typy, které mohou být SQL Serverem zastaralé, ale konkrétní důvod není jasný, když jsem dnes četl, zjistil jsem rozdíl mezi textem a varchar(max) a nvarchar(max), hlavně kvůli omezení operátorů, text lze používat pouze následujícími funkcemi:
| funkce | Znění | | DÉLKA DAT | READTEXT | | PATINDEX | NASTAVIT VELIKOST TEXTU | | PODŘETĚZEC | AKTUALIZAČNÍ TEXT | | TEXTPTR | WRITETEXT | | TEXTVALID | |
Například pokud je datový typ sloupce "Text" text, nelze jej použít pro operace jako "=" a "left()", například v následujícím příkladu:
Vytvořte tabulku a vyplňte data:
pokud existuje (vyberte * ze sysobjektů, kde id = OBJECT_ID('[asdf]') a OBJECTPROPERTY(id, 'IsUserTable') = 1)
DROP TABLE [ASDF]
VYTVOŘIT TABULKU [asdf] (
[inttest] [int] IDENTITA (1, 1) NE NULOVÁ ,
[text] [text] NUL ,
[varcharmax] varchar(max) NULL )
ALTER TABULKA [asdf] S NOCHECK, ADD CONSTRAINT [PK_asdf] PRIMÁRNÍ KLÍČ NECLUSTEROVÁN ( [inttest] )
NASTAV IDENTITY_INSERT [ASDF] NA
VLOŽIT [asdf] ([inttest] , [text] , [varcharmax] ) HODNOTY (1, '1111111', '1111111' )
ZAPNI IDENTITY_INSERT [ASDF]
Spusť dotaz:
Dotaz 1: VYBRAT [text]
,[varcharmax]
Z [testDB]. [dbo]. [ASDF]
kde
[text] ='11111' A
[varcharmax] = '1111111'
Objevuje se následující chybová zpráva:
Msg 402, úroveň 16, stav 1, řádek 1
Datové typy text a varchar nejsou kompatibilní v rámci ekvivalentu operátoru.
Dotaz 2: VYBRAT [text]
,[varcharmax]
Z [testDB]. [dbo]. [ASDF]
kde
[varcharmax] = '1111111'
může úspěšně běžet
V MS SQL2005 a vyšších přidávejte datové typy s velkou hodnotou (varchar(max), nvarchar(max), varbinary(max)). Typ dat s velkou hodnotou může uložit až 2^30-1 bajt dat.
Tyto datové typy jsou behaviorálně totožné s menšími datovými typy varchar, nvarchar a varbinary.
Microsoft tvrdí, že předchozí textové, ntextové a obrazové datové typy jsou tento typ a korespondence mezi nimi je:
varchar(max)-------text;
nvarchar(max)-----ntext;
varbinary(max)----image.
U typů datových čísel s velkou hodnotou je práce s daty s velkou hodnotou mnohem flexibilnější než dříve. Například text nelze použít "jako" předtím, ale po varchar(max) tyto problémy neexistují, protože varchar(max) je stejný jako varchar(n) v chování, takže to, co lze použít ve varcahr, lze použít i na varchar(max).
Navíc to podporuje použití spouštěčů AFTER u sloupcových referencí s velkou hodnotou v tabulkách vložených a smazaných. text není dobrý, stručně řečeno, po použití velkého datového typu jsem "už mě nebolí pas, nebolí mě nohy a dokážu vyjít až do šestého patra na jeden dech". Na co čekáte, použijte typ velké hodnoty.
|
Předchozí:Uh-huh, eh-huh, eh-huhDalší:EF (lambda expression) dotazuje několik výjimek nalezených v datech
|