这个标题确实说明了一切,不过对于那些费心点击的人来说,这是一个更多的信息。
SELECT ... WHERE ... = 'abcd';SELECT ... WHERE ... LIKE 'ab%';
我想知道我应该使用nvarchar(10),char(10)还是varchar(10)?对于像我这样的案子,我真的不知道上面这些东西的利弊。我很感谢你的任何意见。
发布于 2010-09-13 19:41:37
CHAR(10)将用空格填充到定义的长度中,例如,如果您有CHAR(10)并在其中存储"Stack“,则内容实际上是”Stack.“。对于像州缩写(总是2个字符)这样的事情来说,效果很好。但是填充确实会使查询在时间上变得更加繁琐。
VARCHAR(10)将根据需要存储更多的字符--更高效,但对于更大的字符串更有效。
NVARCHAR(10)将是相同的--可变长度--但每个字符有2个字节( NCHAR(10)与CHAR(10)相同,每个字符只有2个字节)。当你需要定期支持亚洲字母、西里尔字母、阿拉伯字符或其他“非拉丁”字母时,这是很棒的。如果你只有西欧语言(英语、法语、德语、西班牙语等),那就是浪费空间。
我的直觉告诉我,加入CHAR/NCHAR可能会更快一些,但我不认为这会有太大的区别。否则,如果您必须为每个条目预留10个字符,而且其中大多数字符只有2到5个字符,则会浪费一些空间,因此这是CHAR/NCHAR类型的一个缺点。
因此,如果我不得不决定,我可能会使用VARCHAR(10) (而不知道您的所有详细需求,也就是说)。
发布于 2010-09-13 19:42:59
如果要存储unicode字符,则使用nvarchar。第(10)章将是对储存空间的浪费。
如果您支持英语以外的语言,请使用nvarchar,否则varchar就能做到这一点。比较
不要忘记在这个字段上有一个索引,因为这将加速您的联接和比较。
发布于 2010-09-13 19:44:19
varchar与nvarchar:你确定只限于美英可打印字符集吗?或者你可能需要外来者?
‘'char’vs 'varchar':如果10是一个坚实的硬限制,那么使用char可能会更好。主要问题是,字段将始终填充到10个字符,因此您必须始终修剪()他们。在某些数据库服务器上,您必须考虑where子句(即WHERE col1 = 'abcd ')中的额外间距,但我认为MS做的事情是明智的。
https://stackoverflow.com/questions/3703774
复制相似问题