我试图找到表中指定的字符串列的长度。
我是在CHARACTER_MAXIMUM_LENGTH
的{{1}}的帮助下完成的。
然而,对于infomation_schema.columns
,它返回-1。我想知道如果表中存在varchar(max)
,varchar(max)
等列,我是否应该返回允许的最大长度?
答案 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限制中减去任何额外的元数据,但如果我发现其他任何内容,我明天会发表评论。