【发布时间】:2010-09-15 16:41:53
【问题描述】:
如果我将 varchar 列定义为长度为 32 或 128,在 sql server 中是否会有所不同?
【问题讨论】:
-
您是否在问:如果列的长度是 2 的幂,会有所不同吗? (32/64/128/256/等)这个问题的答案非常不同。
标签: sql-server optimization varchar
如果我将 varchar 列定义为长度为 32 或 128,在 sql server 中是否会有所不同?
【问题讨论】:
标签: sql-server optimization varchar
varchar 是一个可变字符字段。这意味着它可以将文本数据保存到一定长度。 varchar(32) 只能容纳 32 个字符,而 varchar(128) 可以容纳 128 个字符。如果我尝试在 varchar(3) 字段中输入“12345”;这是将要存储的数据:
“123”
“45”将被“截断”(丢失)。
在您知道某个字段最多只能(或仅应该)特定长度的情况下,它们非常有用。例如:邮政编码或州缩写。事实上,它们通常用于几乎所有类型的文本数据(例如姓名/地址/等等) - 但在这些情况下,您必须注意您提供的数字是要填充的数据类型的合理最大值那个专栏。
但是,您在使用它们时也必须小心,只允许用户输入该字段将支持的最大字符数。否则在截断用户输入时可能会造成混乱。
【讨论】:
应该没有明显的区别,因为后端只会存储您插入该列的数据量。它不会像 char 列那样填充到字段的完整大小。
编辑:要了解更多信息,link 应该很有用。
【讨论】:
不应该。它只是定义了它可以容纳的最大长度,实际使用的长度取决于插入的数据。
【讨论】: