SQL Server 2000 ve SQL Server 7'de, bir satır boyut olarak 8000 bayttan fazla olamaz. Bu, bir VARBINARY sütununun yalnızca 8000 bayt depolayabileceği (bir tabloda tek sütun olduğunu varsayarak), bir VARCHAR sütununun 8000 karaktere kadar saklayabileceği ve bir NVARCHAR sütununun 4000 karaktere kadar saklayabildiği anlamına gelir (unicode karakteri başına 2 bayt). Bu sınırlama, veriyi diske kaydetmek için SQL Server'ın kullandığı 8 KB'lik dahili sayfa boyutundan kaynaklanmaktadır.
Daha fazla veriyi tek bir sütunda saklamak için, depolanan veri sayfalarından ayrı olarak 8 KB veri sayfasının bir koleksiyonunda bulunan TEXT, NTEXT veya IMAGE veri türlerini (BLOB) kullanmanız gerekir. diğer veriler aynı tabloda. Bu veri sayfaları bir B-ağacı yapısında düzenlenmiştir. BLOB'lar çalışmak ve manipüle etmek zordur. Bir yordamda veya bir işlevde değişken olarak kullanılamazlar ve REPLACE, CHARINDEX veya SUBSTRING gibi dize işlevlerinde kullanılamazlar. Çoğu durumda, BLOB'ları işlemek için READTEXT, WRITETEXT ve UPDATETEXT komutlarını kullanmanız gerekir.
Bu sorunu çözmek için Microsoft, SQL Server 2005'te VARCHAR (MAX), NVARCHAR (MAX) ve VARBINARY (MAX) veri türlerini tanıttı. Bu veri türleri, BLOB'ların tutabileceği aynı miktarda veriyi tutabilir (2 GB) ve diğer veri türleri için kullanılan aynı tip veri sayfalarında saklanırlar. MAX veri türündeki veriler 8 KB'yi aştığında, bir aşırı akış sayfası kullanılır. SQL Server 2005, sayfaya otomatik olarak bir aşırı akış göstergesi atar ve veri satırlarını diğer veri türlerini de manipüle ettiği şekilde nasıl değiştireceğini bilir. Saklı yordam veya işlev içinde MAX veri türlerinin değişkenlerini bildirebilir ve hatta bunları değişken olarak geçirebilirsiniz. Bunları ayrıca dize işlevlerinde de kullanabilirsiniz.
Microsoft, SQL Server 2005'te BLOB'lar yerine MAX veri türlerini kullanmanızı önerir. Gerçekte, BLOB'lar SQL Server'ın gelecekteki sürümlerinde kullanımdan kaldırılmaktadır.
Kredi: SQL Server http://www.teratrax.com/articles/varchar_max.html
ve SQL Server , VARCHAR (MAX) için maksimum depolama boyutu 2^31-1 bayt (2147483647 bayt veya 2GB - 1 bayt). Depolama boyutu, + 2 bayt olarak girilen gerçek veri uzunluğudır. Girilen veriler 0 karakter uzunluğunda olabilir. VARCHAR veri türündeki her karakter bir bayt kullandığı için, bir VARCHAR (MAX) veri türü için maksimum uzunluk 2,147,483,645'tir. sizin için
Tam İlginç okuma: http://www.sql-server-helper.com/faq/sql-server-2005-varchar-max-p01.aspx
Referans: http://msdn.microsoft.com/en-us/library/ms143432.aspx
[Buraya başka bir fark için cevabımı bakın] (http://stackoverflow.com/questions/2009694/is-there-an-advantage-to-varchar500-over-varchar8000/5654947#5654947) ve bu blog gönderisi [ tarafından Remus Rusanu] (http: // rusanu.com/2010/03/22/performans karşılaştırması-varcharmax-vs-varcharn /) –
Bağlantıya bakın: http://stackoverflow.com/q/28980502/1805776 – vicky