Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 11633|Odpověď: 0

[Zdroj] Existuje rozdíl mezi datovými typy Text a varchar(max) v SQL Serveru

[Kopírovat odkaz]
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:
funkceZnění
DÉLKA DATREADTEXT
PATINDEXNASTAVIT VELIKOST TEXTU
PODŘETĚZECAKTUALIZAČNÍ TEXT
TEXTPTRWRITETEXT
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-huh
Další:EF (lambda expression) dotazuje několik výjimek nalezených v datech
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com