查找varchar(max)列的长度

时间:2012-02-02 15:24:48

标签: sql-server sql-server-2008

我试图找到表中指定的字符串列的长度。

我是在CHARACTER_MAXIMUM_LENGTH的{​​{1}}的帮助下完成的。

然而,对于infomation_schema.columns,它返回-1。我想知道如果表中存在varchar(max)varchar(max)等列,我是否应该返回允许的最大长度?

1 个答案:

答案 0 :(得分:1)

是的,varchar(max)或nvarchar(max)列的最大长度不是无限制的。 存储限制为2GB(2 ^ 31 -1字节)。 当数据小于8kb时,它表现为常规varchar / nvarchar列。然后,当单个行的数据大于8kb时,它将存储为大对象text / ntext值。您可以将其视为2种数据类型的包装器。

但是,最大字符长度不是 2000000000。 varchar(max)列为2147483645,nvarchar(max)列为1073741822。 这是因为nvarchar每个字符有2个字节,varchar每个字符有1个字节,需要2个字节来存储变量列的数据长度。

我认为从2GB限制中减去任何额外的元数据,但如果我发现其他任何内容,我明天会发表评论。