1

我正在查看标题为Selecting a SQL Server Collat​​ion的文章,试图决定将哪一个用于数据库,我注意到两个看起来相同。页面上未列出的这两者之间是否存在某种差异?

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
描述 = 字典顺序,不区分大小写

4

1 回答 1

3

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

我建议您要么坚持使用上面列出的 SQL Server 默认值,要么使用基于仔细选择的 Windows 排序规则。您会注意到英语(美国)实际上是默认设置,我不确定该排序规则是否已制成支持 Unicode 的排序规则。

其他要查看的页面是关于 ASCII和扩展 ASCII的Wikipedia 文章,其中解释了代码页及其历史。

于 2013-07-19T23:02:00.117 回答