13

如果varchar(max)用作数据类型并且插入的数据小于完全分配,即只有 200 个字符,那么 SQL Server 将总是占用全部空间varchar(max)还是只占用 200 个字符的空间?

此外,即使插入的数据较少,还有哪些其他数据类型会占用最大空间?

是否有任何文件说明这一点?

4

3 回答 3

25

char 和 varchar (Transact-SQL) 上的 MS DOCS

char [ ( n ) ]
固定长度的非 Unicode 字符串数据。n 定义字符串长度,并且必须是 1 到 8,000 之间的值。存储大小为 n 字节。char 的 ISO 同义词是 character。

varchar [ ( n | max ) ]
可变长度、非 Unicode 字符串数据。n 定义字符串长度,可以是 1 到 8,000 之间的值。max 表示最大存储大小为 2^31-1 字节(2 GB)。存储大小是输入数据的实际长度 + 2 个字节。varchar 的 ISO 同义词是 char 变化或字符变化。

因此,对于 varchar,包括 max - 存储将取决于实际数据长度,而 char 始终是固定大小,即使没有使用整个空间也是如此。

于 2013-06-19T03:46:16.867 回答
3

仅用于CHAR您知道其长度是固定的字符串。例如,如果您定义一个域,其值限制为“T”和“F”,您可能应该将其设为CHAR[1]. 如果您要存储美国社会安全号码,请创建域CHAR[9](或者CHAR[11]如果您想要标点符号)。

用于VARCHAR长度可能不同的字符串,例如名称、简短描述等。VARCHAR当您不想担心去除尾随空格时使用。VARCHAR除非有充分的理由不使用,否则使用。

于 2013-06-19T04:54:35.380 回答
1

varchar大小取决于数据的长度。所以在你的情况下,它只需要200 chars

于 2019-08-15T00:35:36.667 回答