代码之家  ›  专栏  ›  技术社区  ›  Nate CSS Guy

对于一个文本字段,我应该使用什么样的SQL Server数据类型,这个文本字段将被连接到“LIKE'd”并进行大量查询?

  •  4
  • Nate CSS Guy  · 技术社区  · 14 年前

    标题真的说明了一切,但更多的信息,为那些谁费心点击。

      • SELECT ... WHERE ... = 'abcd';
      • SELECT ... WHERE ... LIKE 'ab%';
    • 将在表联接中使用。

    3 回复  |  直到 14 年前
        1
  •  7
  •   marc_s    14 年前

    CHAR(10) 将用空格填充到定义的长度,例如

    VARCHAR(10) 将根据需要存储尽可能多的字符—效率更高,但对于较大的字符串则更高。

    NVARCHAR(10) 将是相同的-可变长度-但每个字符有2个字节(和 NCHAR(10) 字符(10) -每个字符只有2个字节)。当您需要定期支持亚洲、西里尔、阿拉伯字符或其他“非拉丁”字母时,非常适合。如果你只有西欧语言(英语、法语、德语、西班牙语等),那就是浪费空间。

    CHAR/NCHAR 加入的时候可能会快一点,但我觉得不会有什么大的区别。否则,如果您必须为每个条目保留10个字符,并且大多数字符只有2到5个字符,那么您就浪费了一些空间,因此这对 字符/NCHAR 类型。

    瓦尔查尔(10) (也就是说,不知道您的所有详细要求)。

        2
  •  0
  •   Faisal Feroz    14 年前

    char(10)会浪费存储空间。

    别忘了在这个字段上有一个索引,因为这会加快连接和比较的速度。

        3
  •  0
  •   James Curran    14 年前

    varchar nvarchar :您确定仅限于美英可打印字符集吗?或者你需要外国角色?

    “char”vs“varchar”:如果10是一个固定的、硬的限制,那么最好使用 char . 主要的问题是这个字段总是被填充到10个字符,所以你必须总是修剪它们。在某些数据库服务器上,必须考虑where子句中的额外间距(即。, WHERE col1 = 'abcd '