sql中varchar的最大长度

时间:2011-05-16 07:21:48

标签: mysql sql tsql

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

谢谢

2 个答案:

答案 0 :(得分:5)

此类问题的第一个停靠点应该始终是手册。

  • 关于VARCHAR的mySQL手册是here

  • VARCHAR上的T-SQL手册是here

答案 1 :(得分:3)

在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