SQL_Latin1_General_Cp437_CI_AS_KI_WI与SQL_Latin1_General_Cp850_CI_AS_KI_WI之间的区别

时间:2013-07-19 14:42:31

标签: sql-server collation

我正在审阅标题为Selecting a SQL Server Collation的文章,试图决定将哪一个用于数据库,我注意到两个似乎相同。页面上是否列出了这两者之间是否存在某种差异?

SQL_Latin1_General_Cp437_CI_AS_KI_WI

  

SQL排序顺序ID = 32
  排序顺序名称= nocase.437
  描述=字典顺序,不区分大小写

SQL_Latin1_General_Cp850_CI_AS_KI_WI

  

SQL排序顺序ID = 42
  排序顺序名称= nocase.850
  描述=字典顺序,不区分大小写

1 个答案:

答案 0 :(得分:2)

Cp437Cp850中的数字是指代码页,使用错误的代码页可能会产生一些奇怪的结果!我强烈建议您使用标准排序规则,例如SQL_Latin1_General_CP1_CI_AS(或_AI用于重音不敏感。)然而,选择排序是一件棘手的事情,如果您有大量Unicode数据,则使用SQL排序规则可能导致性能问题(由某些人报告),因为您的索引不会涵盖nvarchar字段中的Unicode字符,或者当存在混合的Unicode和非Unicode数据时可能导致异常排序顺序。有关详细信息,请参阅Collation Types

我建议您坚持上面列出的SQL Server默认设置,或者根据仔细选择使用Windows排序规则。你会注意到英语(美国)实际上是默认的,我不确定这个校对是否是支持Unicode的校对。

要查看的其他页面是Wikipedia article on ASCIIExtended ASCII,它们解释了代码页及其历史记录。