2011-05-16 92 views
1

嗨 Transact-SQL和MySQL中varchar的最大长度是多少? 我看到很多人在TSQL中使用varchar(max)。多久了? 在MySQL中,varchar(max)的等效表达式是什么?sql中varchar的最大长度

感谢

+1

在TSQL,最多为8000个字符。 – alex 2011-05-16 07:24:04

+0

varchar [(n | max)]可变长度的非Unicode字符数据。 n可以是从1到8,000的值。 max表示最大存储大小为2^31-1个字节,即2GB!谢谢 !!! – kevin 2011-05-16 07:39:36

回答

3

在MySQL,行的最大大小是64KB(65535)。

我不知道TSQL的,所以我做了一些研究:

在SQL Server 2000和SQL Server 7,行不能超过大小为8000字节。这意味着VARBINARY列只能存储8000个字节(假设它是表中唯一的列),VARCHAR列最多可存储8000个字符,NVARCHAR列最多可存储4000个字符(每个unicode字符2个字节)。此限制源于SQL Server用于将数据保存到磁盘的8 KB内部页面大小。

要在单列中存储更多数据,您需要使用存储在8 KB数据页集中的TEXT,NTEXT或IMAGE数据类型(BLOB),这些数据页与存储其他数据在同一张表中。这些数据页面以B树结构排列。 BLOB难以操作和操作。它们不能用作过程或函数中的变量,它们不能在字符串函数(如REPLACE,CHARINDEX或SUBSTRING)中使用。在大多数情况下,您必须使用READTEXT,WRITETEXT和UPDATETEXT命令来操作BLOB。

为了解决这个问题,微软推出了VARCHAR(MAX),NVARCHAR(MAX)和VARBINARY(MAX),在SQL Server中的数据类型2005。这些数据类型可以保存数据的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

5

呼吁这些问题的第一站应该总是手册。

  • 上VARCHAR MySQL手册是here

  • 上VARCHAR的T-SQL手册是here