Maks. pojemność to 2 gigabajty przestrzeni - więc patrzysz na nieco ponad 1 miliard 2-bajtowych znaków, które zmieszczą się w NVARCHAR(MAX)
polu.
Używając bardziej szczegółowych liczb drugiej odpowiedzi, powinieneś być w stanie zapisać
(2 ^ 31 - 1 - 2) / 2 = 1'073'741'822 double-byte characters
1 billion, 73 million, 741 thousand and 822 characters to be precise
w twojej NVARCHAR(MAX)
kolumnie (niestety ta ostatnia połowa znaku jest marnowana ...)
Aktualizacja: jak wskazał @MartinMulder: każda kolumna znaków o zmiennej długości ma również 2 bajty narzutu na przechowywanie rzeczywistej długości - więc musiałem odjąć dwa dodatkowe bajty od 2 ^ 31 - 1
długości, którą wcześniej ustaliłem - w ten sposób możesz przechowywać 1 znak Unicode mniej niż Twierdziłem wcześniej.
VARCHAR(MAX)
, jeśli nie potrzebujesz 2-bajtowej obsługi języków azjatyckich, arabskich lub cyrylicy. Użyj,(N)VARCHAR(x)
jeśli wiesz, że ciąg nigdy nie będzie dłuższy niż x znaków (nie używajNVARCHAR(MAX)
dla imienia - użyjNVARCHAR(50)
lub cokolwiek, co ma dla ciebie sens)Z char i varchar (Transact-SQL)
źródło
2 ^ 31-1 bajtów. Więc trochę mniej niż 2 ^ 31-1 znaków dla varchar (max) i połowę tego dla nvarchar (max).
nchar oraz nvarchar
źródło