在MySQL中,一行的最大大小为64KB(65535)。
我不了解TSQL,所以做了一些研究:
在SQL Server 2000和SQL Server 7中,行的大小不能超过8000个字节。这意味着VARBINARY列只能存储8000个字节(假设它是表中的唯一列),VARCHAR列最多可以存储8000个字符,而NVARCHAR列最多可以存储4000个字符(每个Unicode字符2个字节)。此限制源于SQL Server用于将数据保存到磁盘的8 KB内部页面大小。
要将更多数据存储在一个列中,您需要使用TEXT,NTEXT或IMAGE数据类型(BLOB),这些数据类型存储在8 KB数据页的集合中,这些数据页与在其中存储其他数据的数据页是分开的同一张桌子。这些数据页以B树结构排列。 BLOB很难使用和操纵。它们不能在过程或函数中用作变量,并且不能在字符串函数(如REPLACE,CHARINDEX或SUBSTRING)内部使用。在大多数情况下,您必须使用READTEXT,WRITETEXT和UPDATETEXT命令来操作BLOB。
为了解决此问题,Microsoft在SQL Server 2005中引入了VARCHAR(MAX),NVARCHAR(MAX)和VARBINARY(MAX)数据类型。这些数据类型可以容纳相同数量的数据,BLOB可以容纳(2 GB),它们分别是存储在用于其他数据类型的相同类型的数据页中。当MAX数据类型中的数据超过8 KB时,将使用溢出页面。 SQL Server 2005自动为页面分配一个溢出指示器,并且知道如何像处理其他数据类型一样操作数据行。您可以在存储过程或函数中声明MAX数据类型的变量,甚至将它们作为变量传递。您也可以在字符串函数中使用它们。
Microsoft建议在SQL Server 2005中使用MAX数据类型代替BLOB。实际上,在SQL Server的将来版本中不建议使用BLOB。
http://www.teratrax.com/articles/varchar_max.html