语法
<SQL_collation_name> :: =
SQL_SortRules[_Pref]_CPCodepage_<ComparisonStyle>
<ComparisonStyle> ::=
_CaseSensitivity_AccentSensitivity | _BIN
SortRules
标识字母表或语言的字符串,当指定按字典排序时应用该字母表或语言的排序规则。例如 Latin1_General 或波兰语,简体中文为Chinese_PRC,繁体中文为Chinese_Taiwan。
Pref
指定大写字母优先。
Codepage
指定用于标识排序规则所使用的代码页的 1 至 4 位数号码。CP1 指定代码页 1252,对于所有其他代码页,则需要指定完整的代码页号码。例如,CP1251 指定代码页 1251,CP850 指定代码页 850。
CaseSensitivity _CI(CS)
CI 指定不区分大小写,CS 指定区分大小写。
如果想让比较将大写字母和小写字母视为不等,请选择该选项。
区分大写字母和小写字母。如果选择此项,排序时小写字母将在其对应的大写字母之前。
如果未选择此选项,则 SQL Server 认为字母的大小写形式对于排序目的而言是相同的。
AccentSensitivity _AI(AS)
AI 指定不区分重音,AS 指定区分重音。
如果想让比较将重音和非重音字母视为不等,请选择该选项。如果选择该选项, 比较还将重音不同的字母视为不等。
区分重音字符和非重音字符。例如,“a”和“?”将被视为不同的字符。
如果未选择此项,在排序时,SQL Server 将把字母的重音形式和非重音形式视为相同。
_KI(KS)
是否区分假名类型,KI不区分,KS区分。
区分日语里面的两种假名字符类型:平假名,片假名。
_WI(WS)
是否区分宽度 WI不区分,WS区分。
区分字符的单字节形式和双字节形式。
如果未选择此项,在排序时,SQL Server 将把同一字符的单字节形式和双字节形式视为相同。
BIN
指定使用二进制排序顺序。
二进制排序规则基于区域设置和数据类型所定义的编码值的顺序,对数据进行排序。SQL Server 中的二进制排序规则强制使用二进制排序顺序,定义了要使用的语言区域设置和 ANSI 代码页。由于二进制排序规则相对简单,因此对改进应用程序的性能非常有用。对于非 Unicode 数据类型,数据比较将基于 ANSI 代码页中定义的码位。对于 Unicode 数据类型,数据比较将基于 Unicode 码位。对于 Unicode 数据类型的二进制排序规则,数据排序将不考虑区域设置。例如,对 Unicode 数据应用 Latin_1_General_BIN 和 Japanese_BIN,会得到完全相同的排序结果。
SQL Server 中的早期二进制排序规则对 Unicode 数据执行的是不完整的逐码位比较。更早的 SQL Server 二进制排序规则将第一个字符作为 WCHAR 比较,接下来是逐字节比较。为了实现向后兼容,将不更改现有的二进制排序规则语义。
_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默认的是按照拼音来进行排序的,在sql-server里面默认的有以下几个排序方式
196 | Chinese_Taiwan_Stroke_BIN |
197 | Chinese_Taiwan_Stroke_CI_AS |
198 | Chinese_PRC_BIN |
199 | Chinese_PRC_CI_AS |
其中_Stroke是按照笔画顺序进行排序,如果想对简体中文进行笔画排序可以采用
Chinese_PRC_Stroke_CS_AS_KS_WS等,其后的_CS_AS_KS_WS根据需要进行选择。