|
|
Julkaistu 13.6.2018 11.07.11
|
|
|

Ensinnäkin varchar(max) korvaa Microsoftin käyttämän tekstitietotyypin,Vanhemmat kenttätyypit, kuten teksti, voidaan peruuttaa myöhemmissä versioissa。 Joten mitä tekstiä voi tallentaa, varchar (max) voidaan ehdottomasti tallentaa. Itse asiassa tallennettavien merkkien määrä on hyvin suuri. 420 miljoonaa tallennettavaa merkkiä on vaikea saavuttaa, mikä mielestäni on vaikeaa.
Tiesin sen vain aiemminteksti ja kuva ovat tietotyyppejä, jotka voivat olla SQL Serverin vanhentuneita, mutta tarkka syy ei ole selvä, kun luin tänään, löysin eron tekstin ja varchar(max) ja nvarchar(max) välillä, pääasiassa operaattoreiden rajoitusten vuoksi, tekstiä voivat käyttää vain seuraavat funktiot:
| funktio | Lausunto | | DATAPITUUS | LUETEKSTI | | PATINDEX | ASETA TEKSTIKOKO | | ALIMERKKIJONO | PÄIVITYSTEKSTI | | TEXTPTR | KIRJOITA | | TEXTVALID | |
Esimerkiksi, jos "Teksti"-sarakkeen tietotyyppi on teksti, sitä ei voi käyttää operaatioihin kuten "=" ja "left()", kuten seuraavassa esimerkissä:
Luo taulukko ja täytä data:
jos on olemassa (valitse * sysobjectsista, missä id = OBJECT_ID('[asdf]') ja OBJECTPROPERTY(id, 'IsUserTable') = 1)
PUDOTUSPÖYTÄ [asdf]
LUO TAULU [asdf] (
[inttest] [int] IDENTITEETTI (1, 1) EI NULL ,
[teksti] [teksti] NULL ,
[varcharmax] varchar(max) NULL )
ALTER TABLE [ASDF] WITH NOCHECK ADD CONSTRAINT [PK_asdf] PRIMARY KEY NONCLUSTERED ( [inttest] )
ASETA IDENTITY_INSERT [asdf] PÄÄLLE
INSERT [asdf] ( [inttest] , [text] , [varcharmax] ) ARVOT ( 1 , '1111111' , '1111111' )
LAITA IDENTITY_INSERT [asdf] LIIKKEELLE
Suorita kysely:
Tiedustelu 1: VALITSE [teksti]
,[varcharmax]
LÄHTEESTÄ [testDB]. [dbo]. [ASDF]
missä
[teksti] ='11111' JA
[varcharmax] = '1111111'
Seuraava virheilmoitus ilmestyy:
Msg 402, taso 16, osavaltio 1, linja 1
Tietotyypit teksti ja varchar eivät ole yhteensopivia operaattorin kanssa.
Tiedustelu 2: VALITSE [teksti]
,[varcharmax]
LÄHTEESTÄ [testDB]. [dbo]. [ASDF]
missä
[varcharmax] = '1111111'
voi toimia onnistuneesti
MS SQL2005:ssa ja sitä ylemmissä lisää suuret arvot tietotyypit (varchar(max), nvarchar(max), varbinary(max)). Suuriarvoinen datatyyppi voi tallentaa jopa 2^30-1 tavun dataa.
Nämä tietotyypit ovat käyttäytymiseltään identtisiä pienempien tietotyyppien varchar, nvarchar ja varbinary kanssa.
Microsoftin väite on korvata aiemmat teksti-, n-teksti- ja kuvatyypit tällä tietotyypillä, ja niiden välinen vastaavuus on:
varchar(max)-------text;
nvarchar(max)-----ntext;
varbinaari(maksimi)----kuva.
Suurten arvojen datatyypeillä on paljon joustavampaa työskennellä suuren arvon datan kanssa kuin ennen. Esimerkiksi tekstiä ei voi käyttää 'like' ennen, mutta varchar(max):n jälkeen näitä ongelmia ei ole, koska varchar(max) on käytökseltään sama kuin varchar(n), joten varcahrissa käytettävää voidaan käyttää varchar(max):ssa.
Lisäksi tämä tukee AFTER-triggerien käyttöä suuriarvoisten tietotyyppien sarakkeviittauksissa lisätyissä ja poistetuissa taulukoissa. Teksti ei ole hyvä, lyhyesti sanottuna, kun käytin suuren arvon datatyyppiä, olen "vyötäröni ei enää sattu, jalkani eivät ole kipeät, ja voin kiivetä kuudennelle kerrokselle yhdellä hengenvedolla". Mitä odotat, käytä suurten arvojen tyyppiä.
|
Edellinen:Uh-huh, eh-huh, eh-huhSeuraava:EF (lambda-lauseke) kysyy useita poikkeuksia, joita datassa esiintyy
|