首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该为一个文本字段使用什么Server,该字段将被连接,“喜欢”并对很多内容进行查询?

我应该为一个文本字段使用什么Server,该字段将被连接,“喜欢”并对很多内容进行查询?
EN

Stack Overflow用户
提问于 2010-09-13 19:37:40
回答 3查看 1.3K关注 0票数 4

这个标题确实说明了一切,不过对于那些费心点击的人来说,这是一个更多的信息。

  • SELECT ... WHERE ... = 'abcd';
  • SELECT ... WHERE ... LIKE 'ab%';

  • 字符串的长度通常在2-5个字符之间,有时会超过5个字符,超过10个。
  • 将被查询如下:

  • 将用于表联接.

我想知道我应该使用nvarchar(10),char(10)还是varchar(10)?对于像我这样的案子,我真的不知道上面这些东西的利弊。我很感谢你的任何意见。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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) (而不知道您的所有详细需求,也就是说)。

票数 7
EN

Stack Overflow用户

发布于 2010-09-13 19:42:59

如果要存储unicode字符,则使用nvarchar。第(10)章将是对储存空间的浪费。

如果您支持英语以外的语言,请使用nvarchar,否则varchar就能做到这一点。比较

不要忘记在这个字段上有一个索引,因为这将加速您的联接和比较。

票数 0
EN

Stack Overflow用户

发布于 2010-09-13 19:44:19

varcharnvarchar:你确定只限于美英可打印字符集吗?或者你可能需要外来者?

‘'char’vs 'varchar':如果10是一个坚实的硬限制,那么使用char可能会更好。主要问题是,字段将始终填充到10个字符,因此您必须始终修剪()他们。在某些数据库服务器上,您必须考虑where子句(即WHERE col1 = 'abcd ')中的额外间距,但我认为MS做的事情是明智的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3703774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档