|
|
Opublikowano 13.06.2018 11:07:11
|
|
|

Po pierwsze, varchar(max) jest substytutem dla typu danych tekstowych używanych przez Microsoft,Starsze typy pól, takie jak tekst, mogą zostać usunięte w kolejnych wersjach。 Więc co można uratować, varchar (maksymalnie) zdecydowanie można uratować. W rzeczywistości liczba znaków, które może przechowywać, jest bardzo duża. 420 milionów znaków, które można przechowywać, jest trudnych do osiągnięcia, co moim zdaniem jest trudne do osiągnięcia.
Wiedziałem tylko wcześniejtekst i obraz to typy danych, które mogą być przestarzałe przez SQL Server, ale dokładny powód nie jest jasny, gdy dziś czytałem, zauważyłem różnicę między tekstem a varchar(max) a nvarchar(max), głównie ze względu na ograniczenia operatorów, tekst może być używany tylko przez następujące funkcje:
| funkcja | Oświadczenie | | DŁUGOŚĆ DANYCH | READTEXT | | PATINDEX | USTAW ROZMIAR TEKSTU | | PODCIĄG | AKTUALIZACJA TEKST | | TEXTPTR | WRITETEXT | | TEXTVALID | |
Na przykład, jeśli typ danych kolumny "Tekst" to tekst, nie może być używany do operacji takich jak "=" i "left()", jak w następującym przykładzie:
Stwórz tabelę i wypełnij dane:
jeśli istnieje (wybierz * z sysobjectów, gdzie id = OBJECT_ID('[asdf]') oraz OBJECTPROPERTY(id, 'IsUserTable') = 1)
DROP TABLE [asdf]
UTWÓRZ TABELĘ [asdf] (
[inttest] [int] TOŻSAMOŚĆ (1, 1) NIE ZEROWA ,
[tekst] [tekst] NULL ,
[varcharmax] varchar(max) NULL )
TABELA ALTERÓW [asdf] Z OGRANICZENIEM DODAWANIA BEZ CHECKU [PK_asdf] KLUCZ GŁÓWNY NIEKLASTROWANY ( [inttest] )
USTAW IDENTITY_INSERT [ASDF] WŁĄCZONE
WSTAW [asdf] ( [inttest] , [tekst] , [varcharmax] ) WARTOŚCI ( 1 , '1111111' , '1111111' )
STARTUJ IDENTITY_INSERT [ASDF]
Uruchom zapytanie:
Zapytanie 1: WYBIERZ [tekst]
,[varcharmax]
Z [testDB]. [dbo]. [ASDF]
gdzie
[tekst] ='11111' I
[varcharmax] = '1111111'
Pojawia się następujący komunikat o błędzie:
Msg 402, poziom 16, stan 1, linia 1
Typy danych text i varchar nie są kompatybilne w operatorze równym z .
Pytanie 2: WYBIERZ [tekst]
,[varcharmax]
Z [testDB]. [dbo]. [ASDF]
gdzie
[varcharmax] = '1111111'
może działać pomyślnie
W MS SQL2005 i wyższych dodaj duże typy danych (varchar(max), nvarchar(max), varbinary(max)). Typ danych o dużej wartości może przechowywać do 2^30-1 bajtu danych.
Te typy danych są zachowawczo identyczne z mniejszymi typami danych varchar, nvarchar i varbinary.
Microsoft chce zastąpić poprzednie typy danych tekstowych, ntextowych i obrazowych tym typem danych, a ich relacja jest następująca:
varchar(max)-------tekst;
nvarchar(max)-----ntext;
varbinary(max)----image.
W przypadku typów danych o dużej wartości praca z danymi o dużej wartości jest znacznie bardziej elastyczna niż wcześniej. Na przykład tekst nie może być używany "jak" wcześniej, ale po varchar(max) nie ma tych problemów, ponieważ varchar(max) jest taki sam jak varchar(n) pod względem zachowania, więc to, co można użyć w varcahr, można użyć na varchar(max).
Ponadto wspiera to stosowanie wyzwalaczy AFTER przy odniesieniach do kolumn o dużej wartości w tabelach wstawionych i usuniętych. tekst nie jest dobry, krótko mówiąc, po użyciu typu danych o dużej wartości mówię: "moja talia już nie boli, nogi mnie nie bolą i mogę wejść na szóste piętro jednym oddechem". Na co czekasz, użyj typu dużej wartości.
|
Poprzedni:Uh-huh, eh-huh, eh-huhNastępny:EF (Lambda expression) zapytuje kilka wyjątków napotkanych w danych
|