SQL 排序

一、排序规则简介:

 

什么叫排序规则呢?MS是这样描述的:"在 Microsoft SQL Server  中,

字符串的物理存储由排序规则控制。排序规则指定表示每个字符的位模式以及存

储和比较字符所使用的规则。"

  在查询分析器内执行下面语句,可以得到SQL SERVER支持的所有排序规则。

    select * from ::fn_helpcollations() 

排序规则名称由两部份构成,前半部份是指本排序规则所支持的字符集。

如:

  Chinese_PRC_CS_AI_WS 

前半部份:指UNICODE字符集,Chinese_PRC_指针对大陆简体字UNICODE的排序规则,按拼音排序。

Chinese_PRC_Stroke 表示按汉字笔画排序;

排序规则的后半部份即后缀 含义: 

  _BIN 二进制排序 

  _CI(CS) 是否区分大小写,CI不区分,CS区分(case-insensitive/case-sensitive)

  _AI(AS) 是否区分重音,AI不区分,AS区分(accent-insensitive/accent-sensitive)

  _KI(KS) 是否区分假名类型,KI不区分,KS区分(kanatype-insensitive/kanatype-sensitive)

  _WI(WS) 是否区分宽度 WI不区分,WS区分(width-insensitive/width-sensitive) 

区分大小写:如果想让比较将大写字母和小写字母视为不等,请选择该选项。

区分重音:如果想让比较将重音和非重音字母视为不等,请选择该选项。如果选择该选项,

比较还将重音不同的字母视为不等。

区分假名:如果想让比较将片假名和平假名日语音节视为不等,请选择该选项。

区分宽度:如果想让比较将半角字符和全角字符视为不等,请选择该选项。

 

 

二、排序规则选择:

 

如果 SQL Server  实例的所有用户都使用同一种语言,则应选取支持该语言的排序规则。例如,如果所有用户都讲法语,则选择法语排序规则。如果您的 SQL Server 实例的用户讲多种语言,则应选择能最好地满足各种语言需要的排序规则。例如,如果用户一般都讲西欧语言,则选择 Latin1_General 排序规则。 

 

如果要支持讲多种语言的用户,则对于所有字符数据使用 Unicode 数据类型 ncharnvarchar 和 nvarchar(max) 是非常重要的。Unicode 可避免非 Unicode 的 charvarchar 和 text 数据类型带来的代码页转换难题。因为排序规则定义用于比较操作的排序次序和 Unicode 字符的排序,所以当用 Unicode 数据类型实现所有列时,排序规则仍会产生不同。即使使用 Unicode 数据类型存储字符数据时,也应选择支持大多数用户的排序规则,以防使用非 Unicode 数据类型实现列或变量。

 

SQL Server 只支持由基础操作系统支持的代码页。在执行取决于排序规则的操作时,引用的对象所使用的 SQL Server 排序规则必须使用计算机上运行的操作系统所支持的代码页。 

 

如果指定的排序规则(或引用的对象所使用的排序规则)使用 Windows 操作系统不支持的代码页,则 SQL Server 将发出错误。对此错误的响应取决于计算机上安装的 Windows 操作系统的版本。Windows 2000 及更新版本支持由 SQL Server 排序规则使用的所有代码页。因此,不会出现该错误消息。

 

三、排序规则的语法:

 

Windows 排序规则名称由排序规则指示器和比较风格构成。 

 

语法

< Windows_collation_name > :: = 

 

    CollationDesignator_<ComparisonStyle>

 

    < ComparisonStyle > ::= 

        CaseSensitivity_AccentSensitivity

        [_KanatypeSensitive [_WidthSensitive ] ]

        | _BIN

 

参数

CollationDesignator

 

指定 Windows 排序规则使用的基本排序规则。基本排序规则包括: 

 

当指定按字典排序时应用其排序规则的字母表或语言

 

 

用于存储非 Unicode 字符数据的代码页。 

例如 Latin1_General 或法文,两者都使用代码页 1252,或土耳其文,它使用代码页 1254

 

CaseSensitivity

 

CI 指定不区分大小写,CS 指定区分大小写。

 

AccentSensitivity

 

AI 指定不区分重音,AS 指定区分重音。

 

KanatypeSensitive

 

Omitted 指定不区分大小写,KS 指定区分假名类型。

 

WidthSensitivity

 

Omitted 指定不区分大小写,WS 指定区分大小写。

 

BIN

 

指定使用二进制排序次序。

转载于:https://www.cnblogs.com/zxm1002/p/4748901.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值