排序规则类型

SQL Server 提供了两组排序规则:Windows 排序规则和 SQL Server 排序规则。

Windows 排序规则

Windows 排序规则是为了使 SQL Server 能够支持对安装 SQL Server 实例的操作系统可用的 Windows 系统区域设置而定义的。有关 SQL Server 2008 中新增的 Windows 排序规则支持(基于 Windows 系统区域设置的排序规则)及所有其他 Windows 排序规则的信息,请参阅 Windows 排序规则名称 (Transact-SQL)

通过为 SQL Server 指定 Windows 排序规则,并为计算机指定关联的 Windows 区域设置,SQL Server 实例便与计算机上运行的应用程序使用相同的代码页及排序和比较规则。例如,SQL Server 的法语 Windows 排序规则与 Windows 法语区域设置的排序规则属性相匹配。

Windows 区域设置的数量比 SQL Server 排序规则多。Windows 区域设置名称是基于语言和地域的;例如,法语(加拿大)。不过,若干种语言可以共享通用的字母表和规则进行字符的排序和比较。例如,多个 Windows 区域设置(包括所有葡萄牙语和英语 Windows 区域设置)使用 Latin1 代码页 (1252) 并遵循一组公用的字符排序和比较规则。Latin1_General 是 SQL Server 支持的基于 1252 代码页和排序规则的 Windows 排序规则,它支持所有这些 Windows 区域设置。

另外,Windows 区域设置还指定 SQL Server 支持的 Windows 排序规则不涉及的属性,如货币、日期和时间格式等。因为不同的国家和地区(比如英国和美国)使用不同的货币、日期和时间格式,因此它们需要不同的 Windows 区域设置。但由于它们使用相同的字母表和规则来对字符进行排序和比较,因而可以使用相同的 SQL Server 排序规则。在 SQL Server 中,Windows 排序规则与后缀结合使用,这些后缀基于大小写、重音、假名和全半角定义排序规则和比较规则。有关这些后缀的详细信息,请参阅 Windows 排序规则排序样式

SQL Server 排序规则

SQL Server 排序规则是一种兼容性选项,用来匹配 SQL Server 早期版本所指定的代码页号和排序顺序的公用组合属性。许多排序规则都支持通过后缀指定区分大小写、重音、假名、全半角,但不全是这样。有关详细信息,请参阅使用 SQL Server 排序规则

SQL Server 排序规则通过使用 Unicode 数据对应的 Windows 排序规则,对非 Unicode 数据应用非 Unicode 排序规则,对 Unicode 数据应用 Unicode 排序规则。这一差异可能导致对相同字符的比较得到不一致的结果。因此,如果您的数据库中既有 Unicode 列,又有非 Unicode 列,应将它们都定义为使用 Windows 排序规则,这样可以对 Unicode 和非 Unicode 数据使用相同的排序规则。

为了保持与 SQL Server 早期版本的兼容性,或者为了保持与使用 SQL Server 早期版本中的 SQL Server 排序规则开发的应用程序的兼容性,SQL Server 为使用英语(美国)Windows 系统区域设置的计算机上的服务器安装提供 SQL_Latin1_General_CP1_CI_AS 排序规则作为默认排序规则。

Windows 排序规则与 SQL Server 排序规则在性能上可能存在着差异。有关详细信息,请参阅 Unicode 对存储和性能的影响