Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 11633|Odpoveď: 0

[Zdroj] Existuje rozdiel medzi dátovými typmi Text a varchar(max) v SQL Serveri

[Kopírovať odkaz]
Zverejnené 13. 6. 2018 11:07:11 | | |
Po prvé, varchar(max) je náhradou za textový dátový typ používaný Microsoftom,Staršie typy polí, ako napríklad text, môžu byť v nasledujúcich verziách zrušené。 Takže aký text sa dá zachrániť, varchar (max) sa určite dá zachrániť. V skutočnosti je počet znakov, ktoré dokáže uložiť, veľmi veľký. 420 miliónov znakov, ktoré sa dajú uložiť, je ťažko dostupných, čo podľa mňa je ťažké dosiahnuť.

Vedel som to len predtýmtext a obraz sú dátové typy, ktoré môžu byť v SQL Serveri zastarané, ale konkrétny dôvod nie je jasný, keď som dnes čítal, našiel som rozdiel medzi textom a varchar(max) a nvarchar(max), hlavne kvôli obmedzeniu operátorov, text môže byť použitý iba týmito funkciami:
funkciaVyjadrenie
DÁTOVÁ DĹŽKAREADTEXT
PATINDEXNASTAVIŤ TEXTSIZE
PODREŤAZECAKTUALIZÁCIA TEXTU
TEXTPTRWRITETEXT
TEXTVALID


Napríklad, ak je dátový typ stĺpca "Text" text, potom ho nemožno použiť na operácie ako "=" a "left()", ako napríklad nasledujúci príklad:

Vytvorte tabuľku a vyplňte údaje:

ak existuje (vyberte * zo sysobjects, kde id = OBJECT_ID('[asdf]') a OBJECTPROPERTY(id, 'IsUserTable') = 1)

DROP TABLE [asdf]

VYTVORIŤ TABUĽKU [asdf] (

[inttest] [int] IDENTITA (1, 1) NIE NULOVÁ ,

[text] [text] NULL ,

[varcharmax] varchar(max) NULL )

ALTER TABUĽKA [asdf] S NOCHECK ADD CONSTRAINT [PK_asdf] PRIMÁRNY KĽÚČ NEKLASTROVANÝ ( [inttest] )



NASTAVTE IDENTITY_INSERT [ASDF] NA



VLOŽIŤ [asdf] ( [inttest] , [text] , [varcharmax] ) HODNOTY ( 1 , '1111111' , '1111111' )



NASTAV IDENTITY_INSERT [ASDF]

Spustiť dotaz:

Otázka 1:
VYBRAŤ [text]

      ,[varcharmax]

Z [testDB]. [dbo]. [ASDF]

kde

[text] ='11111' A

[varcharmax] = '1111111'


Objavuje sa nasledujúca chybová správa:

Msg 402, úroveň 16, stav 1, riadok 1

Dátové typy text a varchar nie sú kompatibilné v ekvivalentnom operátore.

Otázka 2:
VYBRAŤ [text]

      ,[varcharmax]

Z [testDB]. [dbo]. [ASDF]

kde

[varcharmax] = '1111111'


môže úspešne bežať



V MS SQL2005 a vyšších pridajte dátové typy s veľkou hodnotou (varchar(max), nvarchar(max), varbinary(max)). Typ dát s veľkou hodnotou môže uložiť až 2^30-1 bajt dát.

Tieto dátové typy sú behaviorálne identické s menšími dátovými typmi varchar, nvarchar a varbinary.

Microsoft tvrdí, že chce nahradiť predchádzajúce textové, ntextové a obrazové dátové typy týmto typom, pričom korešpondencia medzi nimi je:

varchar(max)-------text;

nvarchar(max)-----ntext;

varbinary(max)----image.



Pri veľkých hodnotových dátových typoch je oveľa flexibilnejšie pracovať s veľkými hodnotovými údajmi než predtým. Napríklad text sa nedá použiť 'ako' predtým, ale po varchar(max) tieto problémy neexistujú, pretože varchar(max) je v správaní rovnaký ako varchar(n), takže to, čo sa dá použiť vo varcahr, môže byť použité aj na varchar(max).

Okrem toho to podporuje použitie spúšťačov AFTER pri referenciách stĺpcov s veľkou hodnotou v vložených a vymazaných tabuľkách. text nie je dobrý, stručne povedané, po použití veľkého dátového typu som si povedal: "Pás ma už nebolí, nohy ma nebolia a dokážem vyjsť na šieste poschodie na jeden nádych". Na čo čakáš, použi typ veľkej hodnoty.






Predchádzajúci:Uh-huh, eh-huh, eh-huh
Budúci:EF (lambda expression) dotazuje na niekoľko výnimiek, ktoré sa vyskytli v dátach
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com