Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 11633|Antwoord: 0

[Bron] Er is een verschil tussen tekst- en varchar(max)-datatypes in SQL Server

[Link kopiëren]
Geplaatst op 13-06-2018 11:07:11 | | |
Ten eerste is varchar(max) een vervanging voor het tekstdatatype dat door Microsoft wordt gebruikt,Oudere veldtypen zoals tekst kunnen in latere versies worden geannuleerd。 Dus welke tekst kan worden opgeslagen, varchar(max) kan zeker worden opgeslagen. Sterker nog, het aantal tekens dat het kan opslaan is erg groot. De 420 miljoen tekens die opgeslagen kunnen worden zijn moeilijk te bereiken, wat ik ook moeilijk vind.

Ik wist het alleen van tevorentekst en afbeelding zijn datatypen die mogelijk verouderd zijn door SQL Server, maar de specifieke reden is niet duidelijk; toen ik vandaag las, vond ik het verschil tussen text en varchar(max) en nvarchar(max), voornamelijk vanwege de beperking van operatoren; tekst kan alleen door de volgende functies worden gebruikt:
functieStelling
GEGEVENSLENGTELEESTEKST
PATINDEXSTEL TEKSTGROOTTE IN
SUBSTRINGUPDATETEKST
TEXTPTRWRITETEXT
TEXTVALID


Als bijvoorbeeld het datatype van de kolom "Text" tekst is, kan het niet worden gebruikt voor bewerkingen zoals "=" en "left()", zoals het volgende voorbeeld:

Maak een tabel aan en vul de gegevens in:

als bestaat (selecteer * uit sysobjects waarbij id = OBJECT_ID('[asdf]') en OBJECTPROPERTY(id, 'IsUserTable') = 1)

DROP TABLE [asdf]

MAAK TABEL [asdf] (

[inttest] [int] IDENTITEIT (1, 1) NIET NUL ,

[tekst] [tekst] NULL ,

[varcharmax] varchar(max) NULL )

ALTER TABLE [ASDF] MET NOCHECK ADD CONSTRAINT [PK_asdf] PRIMAIRE SLEUTEL NIET-GECLUSTERD ( [inttest] )



ZET IDENTITY_INSERT [asdf] AAN



INVOEGEN [asdf] ( [int] , [tekst] , [varcharmax] ) WAARDEN ( 1 , '1111111' , '1111111' )



ZET IDENTITY_INSERT [asdf] OP PAD

Voer de zoekopdracht uit:

Onderzoek 1:
SELECTEER [tekst]

      ,[varcharmax]

VAN [testDB]. [dbo]. [asdf]

waarbij

[tekst] ='11111' EN

[varcharmax] = '1111111'


De volgende foutmelding verschijnt:

Bericht 402, Niveau 16, Staat 1, Lijn 1

De datatypes text en varchar zijn niet compatibel in de equivalent to operator.

Onderzoek 2:
SELECTEER [tekst]

      ,[varcharmax]

VAN [testDB]. [dbo]. [asdf]

waarbij

[varcharmax] = '1111111'


kan succesvol lopen



In MS SQL2005 en hoger voeg je grote waarde datatypes toe (varchar(max), nvarchar(max), varbinary(max)). Het datatype met grote waarde kan tot 2^30-1 byte aan data opslaan.

Deze datatypes zijn gedragsmatig identiek aan de kleinere datatypes varchar, nvarchar en varbinary.

Microsofts bewering is om de eerdere tekst-, ntext- en afbeeldingsdatatypes te vervangen door dit datatype, en de overeenkomst tussen deze is als volgt:

varchar(max)-------tekst;

nvarchar(max)-----ntext;

varbinary(max)----afbeelding.



Bij datatypes met grote waarde is het veel flexibeler om met data met grote waarde te werken dan voorheen. Bijvoorbeeld, tekst kan niet 'zoals' worden gebruikt als voorheen, maar na varchar(max) zijn deze problemen er niet, omdat varchar(max) hetzelfde gedrag heeft als varchar(n), dus wat in varcahr gebruikt kan worden, kan ook op varchar(max) worden gebruikt.

Daarnaast ondersteunt dit het gebruik van AFTER-triggers op kolomreferenties met grote waarden in ingevoegde en verwijderde tabellen. tekst is niet goed, kortom, na het gebruik van het type grote waarde data ben ik: "mijn taille doet geen pijn meer, mijn benen doen geen pijn meer, en ik kan in één adem naar de zesde verdieping". Waar wacht je nog op, gebruik het type met grote waarde.






Vorig:Uh-huh, eh-huh, eh-huh
Volgend:EF (lambda-expressie) vraagt verschillende uitzonderingen die in de data worden aangetroffen
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com