Nvarchar'ın (MAX) tutacağı maksimum karakter sayısı nedir?


Yanıtlar:


155

Maks. Alan sayısı kapasite 2 gigabaytlık bir alandır - yani bir NVARCHAR(MAX)alana sığacak 1 milyar 2 baytlık karakterin biraz üzerinde bakıyorsunuz .

Diğer cevabın daha ayrıntılı numaralarını kullanarak, saklayabilmelisiniz.

(2 ^ 31 - 1 - 2) / 2 = 1'073'741'822 double-byte characters

1 billion, 73 million, 741 thousand and 822 characters to be precise

senin içinde NVARCHAR(MAX)sütuna (maalesef son yarım karakter israf edildiği ...)

Güncelleme: @MartinMulder'ın belirttiği gibi: herhangi bir değişken uzunluklu karakter sütununun gerçek uzunluğu depolamak için 2 bayt ek yükü de vardır - bu yüzden daha 2 ^ 31 - 1önce öngördüğüm uzunluktan iki bayt daha çıkarmam gerekiyordu - böylece 1 Unicode karakterini daha az saklayabilirsiniz Daha önce iddia etmiştim.


1
Vay be ... bu yüzden sanırım bir maksimum boyut doğrulama kuralı belirleme konusunda gerçekten endişelenmeme gerek yok. Yine de nvarchar (MAX) kullandığım zaman dikkatli olsam iyi olur.
quakkels

20
@quakkels: Tolstoi'nin Savaş ve Barışını (yaklaşık 3,1 milyon karakter) neredeyse 350 kat fazla üstlenmeyi planlamıyorsanız - hayır, kapasite konusunda endişelenmenize gerek kalmayacak :-) Ve bir VARCHAR / NVARCHAR türü olduğu için her zaman yalnızca gerektiği kadar alan kullanın - boşa giden veya gereksiz yere ayrılmış alan konusunda endişelenmeyin ...
marc_s

2
Gerçekten mi? Çok havalı. Merak ediyorum, hangi durumda nvarchar (MAX) kullanmak istemezsiniz?
quakkels

5
@quakkels: VARCHAR(MAX)Asya, Arap veya Kiril dilleri için 2 baytlık desteğe ihtiyacınız yoksa kullanın . (N)VARCHAR(x)Bir dizenin asla x karakterden uzun olmayacağını biliyorsanız kullanın ( NVARCHAR(MAX)bir ad için kullanmayın - NVARCHAR(50)veya sizin için mantıklı olan her şeyi kullanın )
marc_s

1
Sabahıma bana aynı soruyu sormaya başladım ve her iki cevabın yüzümde kocaman bir gülümseme uyandırdı. +1.
Matthis Kohli

11

Gönderen char ve varchar (Transact-SQL)

varchar [(n | maks)]

Değişken uzunluklu, Unicode olmayan karakter verileri. n, 1 ile 8.000 arasında bir değer olabilir. max, maksimum depolama boyutunun 2 ^ 31-1 bayt olduğunu belirtir. Depolama boyutu, + 2 bayt girilen gerçek veri uzunluğudur. Girilen veriler 0 karakter uzunluğunda olabilir. Varchar için ISO eşanlamlıları char değişken veya karakter çeşitlidir.


4

2 ^ 31-1 bayt. Yani, varchar (max) için 2 ^ 31-1 karakterden biraz daha az ve nvarchar (max) için yarısından biraz daha az.

nchar ve nvarchar

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.