|
|
Veröffentlicht am 13.06.2018 11:07:11
|
|
|

Erstens ist varchar(max) ein Ersatz für den von Microsoft verwendeten Textdatentyp,Ältere Feldtypen wie Text können in späteren Versionen gestrichen werden。 Also kann der Text gespeichert werden, varchar(max) definitiv gespeichert werden. Tatsächlich ist die Anzahl der gespeicherten Zeichen sehr groß. Die 420 Millionen Zeichen, die gespeichert werden können, sind schwer zu erreichen, was meiner Meinung nach auch schwer zu erreichen ist.
Ich wusste es vorher nurText und Bild sind Datentypen, die durch SQL Server möglicherweise veraltet sind, aber der genaue Grund ist nicht klar, als ich heute las, stellte ich fest, dass der Unterschied zwischen Text und varchar(max) und nvarchar(max) hauptsächlich wegen der Einschränkung der Operatoren nur von folgenden Funktionen verwendet werden kann:
| Funktion | Aussage | | DATENLÄNGE | LESETEXT | | PATINDEX | TEXTGRÖSSE FESTLEGEN | | SUBSTRING | AKTUALISIERUNGSTEXT | | TEXTPTR | WRITETEXT | | TEXTVALID | |
Wenn zum Beispiel der Datentyp der Spalte "Text" Text ist, kann er nicht für Operationen wie "=" und "links()" verwendet werden, wie im folgenden Beispiel:
Erstellen Sie eine Tabelle und füllen Sie die Daten aus:
wenn existiert (select * aus Sysobjects, wobei id = OBJECT_ID('[asdf]') und OBJECTPROPERTY(id, 'IsUserTable') = 1) existiert
DROP TABLE [asdf]
TABELLE ERSTELLEN [asdf] (
[inttest] [int] IDENTITÄT (1, 1) NICHT NULL ,
[Text] [Text] NULL ,
[varcharmax] varchar(max) NULL )
ALTER TABLE [ASDF] MIT NOCHECK ADD CONSTRAINT [PK_asdf] PRIMÄRSCHLÜSSEL NICHT-CLUSTERED ( [inttest])
SETZ IDENTITY_INSERT [ASDF] AN
INSERT [asdf] ( [inttest] , [text] , [varcharmax] ) WERTE ( 1 , '1111111' , '1111111' )
SETZE IDENTITY_INSERT [ASDF] LOS
Führe die Abfrage aus:
Anfrage 1: AUSWÄHLEN [Text]
,[varcharmax]
AUS [testDB]. [dbo]. [ASDF]
wobei
[Text] ='11111' UND
[varcharmax] = '1111111'
Die folgende Fehlermeldung erscheint:
Nachricht 402, Stufe 16, Bundesstaat 1, Zeile 1
Die Datentypen Text und Varchar sind im Equal-to-Operator nicht kompatibel.
Anfrage 2: AUSWÄHLEN [Text]
,[varcharmax]
AUS [testDB]. [dbo]. [ASDF]
wobei
[varcharmax] = '1111111'
kann erfolgreich laufen
In MS SQL2005 und höher werden große Datentypen hinzugefügt (varchar(max), nvarchar(max), varbinary(max)). Der große Datentyp kann bis zu 2^30-1 Byte Daten speichern.
Diese Datentypen sind verhaltensmäßig identisch mit den kleineren Datentypen varchar, nvarchar und varbinär.
Microsofts Behauptung ist, die vorherigen Text-, nText- und Bilddatentypen durch diesen Datentyp zu ersetzen, und die Entsprechung zwischen ihnen lautet:
varchar(max)-------text;
nvarchar(max)-----ntext;
varbinary(max)----Bild.
Bei hochwertigen Datentypen ist es viel flexibler, mit hochwertigen Daten zu arbeiten als zuvor. Zum Beispiel kann Text vorher nicht 'like' verwendet werden, aber nach varchar(max) gibt es diese Probleme nicht, weil varchar(max) im Verhalten dasselbe ist wie varchar(n), sodass das, was in varcahr verwendet werden kann, auch auf varchar(max) verwendet werden kann.
Zusätzlich unterstützt dies die Verwendung von AFTER-Triggern bei Spaltenreferenzen mit hohem Datenwert in eingefügten und gelöschten Tabellen. Text ist nicht gut, kurz gesagt: Nach der Verwendung des Big-Value-Datentyps bin ich: "Meine Taille tut nicht mehr weh, meine Beine tun nicht mehr weh, und ich kann in einem Atemzug bis in den sechsten Stock gehen". Worauf wartest du? Nutze den Typ mit großem Wert.
|
Vorhergehend:Uh-huh, eh-huh, eh-huhNächster:EF (Lambda-Ausdruck) fragt mehrere Ausnahmen ab, die in den Daten auftreten
|