|
|
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:
| funkcia | Vyjadrenie | | DÁTOVÁ DĹŽKA | READTEXT | | PATINDEX | NASTAVIŤ TEXTSIZE | | PODREŤAZEC | AKTUALIZÁCIA TEXTU | | TEXTPTR | WRITETEXT | | 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-huhBudúci:EF (lambda expression) dotazuje na niekoľko výnimiek, ktoré sa vyskytli v dátach
|