SQL服务器Varchar(max)和占用的空间

时间:2013-06-19 03:42:27

标签: sql-server sqldatatypes varcharmax

如果varchar(max)用作数据类型且插入的数据小于完整分配(即只有200个字符),则SQL Server将始终占用varchar(max)的完整空间或仅200个字符'太空?

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

是否有任何文件指明这个?

3 个答案:

答案 0 :(得分:17)

来自http://msdn.microsoft.com/en-us/library/ms176089.aspx

  • 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总是固定大小,即使没有使用整个空间。

答案 1 :(得分:3)

仅对字符串使用CHAR 你知道它的长度是固定的。例如,如果您定义域 你的价值被限制在'T'和'F',你应该做 CHAR[1]。如果您要存储美国社会安全号码,请制作 域名CHAR[9](如果您想要标点符号,则为CHAR[11])。

VARCHAR用于长度不同的字符串,例如名称,短 描述等。当您不想担心时,请使用VARCHAR 剥离尾随空白。除非有充分的理由,否则请使用VARCHAR 不要。

答案 2 :(得分:1)

varchar 的大小取决于数据的长度。因此,根据您的情况,只需 200个字符