Varchar和char sql server

时间:2016-11-29 10:14:18

标签: sql-server char varchar

我目前正在为一家大公司开发,他们要求我按照一些指导方针为项目创建一个数据库,但我对char和varchar有一个小问题。

我有一个字符串,可以是8或11个字符,我想知道哪个是最佳解决方案:

myColumn varchar(11) 要么 myColumn char(11)

起初我在考虑第二个,但是char是固定长度的吗?

感谢您的回答。

3 个答案:

答案 0 :(得分:0)

char(11)可以保存长度最多为11个字符的字符串,但即使你只有2个字符,也会占用整个11个字符的空间(其余部分将用空格填充。其中varchar(11)保持不变字符串长度相同,但不保留空格。

What is the major difference between Varchar2 and char

答案 1 :(得分:0)

CHAR数据类型是固定长度数据类型。例如,如果声明CHAR(11)数据类型的列,则无论您是在此列中存储1个字符还是11个字符,它始终需要11个字节。

另一方面,VARCHAR是一个可变长度的数据类型。例如,如果声明VARCHAR(11)数据类型的列,则它将使字节数等于此列中存储的字符数。所以,在这个变量/列中,如果只存储一个字符,那么它只需要一个字节,如果我们存储11个字符,则需要11个字节。在本例中,由于您已将列声明为VARCHAR(11),因此我们可以在此列中存储最多11个字符。

https://msdn.microsoft.com/en-in/library/ms176089.aspx

答案 2 :(得分:0)

varchar(11)是更优选的,因为内存分配是动态的(例如,假设字符串长度为8,则内存分配仅为8个字符而不是全部)。但是在char(11)的情况下为所有单元分配了内存。