Windows 排序规则排序样式

SQL Server 安装过程中将提示选择 Windows 排序规则或二进制排序规则。此选择将影响 Microsoft SQL Server 实例的数据比较和排序顺序行为。本主题提供为您的 SQL Server 实现选择 Microsoft Windows 排序规则或二进制排序规则时的注意事项。

ms143515.note(zh-cn,SQL.90).gif注意:
对于 Windows 排序规则,ncharnvarcharntext 这些 Unicode 数据类型与 charvarchartext 这些非 Unicode 数据类型的排序行为相同。

Windows 排序规则根据关联的 Windows 区域设置来定义字符数据的存储规则。Windows 基本排序规则指定应用字典排序时所用的字母表或语言,以及用于存储非 Unicode 字符数据的代码页。二进制排序规则基于区域设置和数据类型所定义的编码值的顺序,对数据进行排序。SQL Server 中的二进制排序规则强制使用二进制排序顺序,定义了要使用的语言区域设置和 ANSI 代码页。由于二进制排序规则相对简单,因此对改进应用程序的性能非常有用。对于非 Unicode 数据类型,数据比较将基于 ANSI 代码页中定义的码位。对于 Unicode 数据类型,数据比较将基于 Unicode 码位。对于 Unicode 数据类型的二进制排序规则,数据排序将不考虑区域设置。例如,对 Unicode 数据应用 Latin_1_General_BIN 和 Japanese_BIN,会得到完全相同的排序结果。

SQL Server 中早期的二进制排序规则对 Unicode 数据执行的是不完整的逐码位比较,因为更早的 SQL Server 二进制排序规则将首字符作为 WCHAR 比较,然后才进行逐字节比较。为了实现向后兼容,将不更改现有的二进制排序规则语义。

此版本 SQL Server 中的二进制排序规则还包括一套新的纯码位比较排序规则。客户可以选择迁移到新的二进制排序规则,以利用真正的码位比较,并且应该使用新的二进制排序规则来开发新的应用程序。新的 BIN2 后缀标识了实现新的码位排序规则语义的排序规则名称。另外,还为新的二进制排序规则添加了与 BIN2 对应的新比较标志。有关详细信息,请参阅使用二进制排序规则

下表说明 SQL Server 2005 的 Windows 排序规则排序顺序选项。

排序顺序(后缀) 排序顺序说明

二进制 (_BIN)1

根据为每个字符定义的位模式对 SQL Server 表中的数据进行排序和比较。二进制排序顺序既区分大小写,也区分重音。二进制排序顺序的速度也最快。有关详细信息,请参阅使用二进制排序规则

如果未选择此选项,则 SQL Server 将遵循字典中定义的相关语言或字母表的排序和比较规则。

二进制-码位 (_BIN2)1

根据 Unicode 数据的 Unicode 码位对 SQL Server 表中的数据进行排序和比较。对于非 Unicode 数据,二进制-码位将使用与二进制排序相同的比较方式。

使用二进制-码位排序顺序的优点是:对已排序的 SQL Server 数据进行比较的应用程序不必重新对数据进行排序。因此,二进制-码位排序顺序使应用程序开发变得更加简单,从而可以提高性能。有关详细信息,请参阅使用二进制排序规则

区分大小写 (_CS)

区分大写字母和小写字母。如果选择此项,排序时小写字母将在其对应的大写字母之前。

如果未选择此选项,则 SQL Server 认为字母的大小写形式对于排序目的而言是相同的。

区分重音 (_AS)

区分重音字符和非重音字符。例如,“a”和“?”将被视为不同的字符。

如果未选择此项,在排序时,SQL Server 将把字母的重音形式和非重音形式视为相同。

区分假名 (_KS)

区分日语中的两种假名字符类型:平假名和片假名。

如果未选择此选项,则 SQL Server 认为片假名字符和平假名字符对于排序目的而言是相等的。

区分全半角 (_WS)

区分字符的单字节形式和双字节形式。

如果未选择此项,在排序时,SQL Server 将把同一字符的单字节形式和双字节形式视为相同。

1如果选择此选项,则区分大小写、区分重音、区分假名和区分全半角选项均不可用。

Windows 排序规则示例

每个 Windows 排序规则都由一系列定义大小写、重音、全半角或假名的后缀组合而成。下列示例说明各种后缀组合的排序顺序行为。

Windows 排序规则后缀 排序顺序说明

_BIN1

二进制排序。

_BIN21

二进制-码位排序顺序(SQL Server 2005 的新增功能)。

_CI_AI

不区分大小写、不区分重音、不区分假名、不区分全半角。

_CI_AI_KS

不区分大小写、不区分重音、区分假名、不区分全半角

_CI_AI_KS_WS

不区分大小写、不区分重音、区分假名、区分全半角

_CI_AI_WS

不区分大小写、不区分重音、不区分假名、区分全半角

_CI_AS

不区分大小写、区分重音、不区分假名、不区分全半角

_CI_AS_KS

不区分大小写、区分重音、区分假名、不区分全半角

_CI_AS_KS_WS

不区分大小写、区分重音、区分假名、区分全半角

_CI_AS_WS

不区分大小写、区分重音、不区分假名、区分全半角

_CS_AI

区分大小写、不区分重音、不区分假名、不区分全半角

_CS_AI_KS

区分大小写、不区分重音、区分假名、不区分全半角

_CS_AI_KS_WS

区分大小写、不区分重音、区分假名、区分全半角

_CS_AI_WS

区分大小写、不区分重音、不区分假名、区分全半角

_CS_AS

区分大小写、区分重音、不区分假名、不区分全半角

_CS_AS_KS

区分大小写、区分重音、区分假名、不区分全半角

_CS_AS_KS_WS

区分大小写、区分重音、区分假名、区分全半角

_CS_AS_WS

区分大小写、区分重音、不区分假名、区分全半角

1如果选择 BIN 或二进制-码位,则区分大小写、区分重音、区分假名和区分全半角选项均不可用。

请参阅

参考

安装程序中的排序规则设置

概念

使用二进制排序规则

帮助和信息

获取 SQL Server 2005 帮助