您的位置:首页 > 数据库

sql-server排序规则浅谈

2008-03-14 01:05 218 查看
语法

<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。

[b]CaseSensitivity _CI(CS)[/b] 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根据需要进行选择。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: