varchar列的大小

15
在 SQL Server 中,如果我将 varchar 列定义为长度为32或128,是否会有区别?

3
您是否在询问:如果列的长度是2的幂次方(32/64/128/256等),会有什么区别?对于那个问题的答案是非常不同的。 - Portman
3个回答

19

Varchar 是一个可变字符字段。这意味着它可以容纳一定长度的文本数据。Varchar(32) 只能容纳 32 个字符,而 Varchar(128) 可以容纳 128 个字符。如果我尝试将 "12345" 输入到 Varchar(3) 字段中,则存储的数据如下:

"123"

"45" 将被 "截断"(丢失)。

它们在某些情况下非常有用,例如您知道某个字段最多只能是(或只应该是)某个特定长度。例如:邮政编码或州缩写。实际上,它们通常用于几乎所有类型的文本数据(例如姓名/地址/等等),但在这些情况下,您必须小心,确保您提供的数字是填充该列的数据类型的合理最大值。

然而,当使用它们时,您还必须小心,仅允许用户输入字段支持的最大字符数。否则,当它截断用户的输入时,可能会导致混淆。


3
没错。除了姓名和地址外,我遇到了许多varchar字段,它们被彻底地填满了排泄物。 - csj

4

由于后端仅存储您插入该列的数据量,因此不应有明显的差异。它不像char列一样填充到字段的完整大小。

编辑:有关更多信息,请参阅此链接


4
它不应该。它只是定义了它可以容纳的最大长度,实际使用的长度取决于插入的数据。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接