SqlServer排序规则的简介、选择、应用

上传人:平*** 文档编号:11125951 上传时间:2017-10-12 格式:DOC 页数:12 大小:107.78KB
返回 下载 相关 举报
SqlServer排序规则的简介、选择、应用_第1页
第1页 / 共12页
SqlServer排序规则的简介、选择、应用_第2页
第2页 / 共12页
SqlServer排序规则的简介、选择、应用_第3页
第3页 / 共12页
SqlServer排序规则的简介、选择、应用_第4页
第4页 / 共12页
SqlServer排序规则的简介、选择、应用_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《SqlServer排序规则的简介、选择、应用》由会员分享,可在线阅读,更多相关《SqlServer排序规则的简介、选择、应用(12页珍藏版)》请在金锄头文库上搜索。

1、Sql Server 排序规则的简介、选择、应用一、排序规则简介: 什么叫排序规则呢?MS 是这样描述的:在 Microsoft SQL Server 中,字符串的物理存储由排序规则控制。排序规则指定表示每个字符的位模式以及存储和比较字符所使用的规则。在查询分析器内执行下面语句,可以得到 SQLSERVER 支持的所有排序规则。select * from :fn_helpcollations() 排序规则名称由两部份构成,前半部份是指本排序规则所支持的字符集。如:Chinese_PRC_CS_AI_WS 前半部份:指 UNICODE 字符集,Chinese_PRC_指针对大陆简体字 UNICO

2、DE 的排序规则,按拼音排序。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

3、-insensitive/width-sensitive) 区分大小写:如果想让比较将大写字母和小写字母视为不等,请选择该选项。区分重音:如果想让比较将重音和非重音字母视为不等,请选择该选项。如果选择该选项,比较还将重音不同的字母视为不等。区分假名:如果想让比较将片假名和平假名日语音节视为不等,请选择该选项。区分宽度:如果想让比较将半角字符和全角字符视为不等,请选择该选项。二、排序规则选择:如果 SQL Server 实例的所有用户都使用同一种语言,则应选取支持该语言的排序规则。例如,如果所有用户都讲法语,则选择法语排序规则。如果您的 SQL Server 实例的用户讲多种语言,则应选择能最好

4、地满足各种语言需要的排序规则。例如,如果用户一般都讲西欧语言,则选择 Latin1_General 排序规则。 如果要支持讲多种语言的用户,则对于所有字符数据使用 Unicode 数据类型 nchar、nvarchar 和 nvarchar(max) 是非常重要的。Unicode 可避免非 Unicode 的 char、varchar 和 text 数据类型带来的代码页转换难题。因为排序规则定义用于比较操作的排序次序和 Unicode 字符的排序,所以当用 Unicode 数据类型实现所有列时,排序规则仍会产生不同。即使使用 Unicode 数据类型存储字符数据时,也应选择支持大多数用户的排序

5、规则,以防使用非 Unicode 数据类型实现列或变量。SQL Server 只支持由基础操作系统支持的代码页。在执行取决于排序规则的操作时,引用的对象所使用的 SQL Server 排序规则必须使用计算机上运行的操作系统所支持的代码页。 如果指定的排序规则(或引用的对象所使用的排序规则)使用 Windows 操作系统不支持的代码页,则 SQL Server 将发出错误。对此错误的响应取决于计算机上安装的 Windows 操作系统的版本。Windows 2000 及更新版本支持由 SQL Server 排序规则使用的所有代码页。因此,不会出现该错误消息。三、排序规则的语法:Windows 排序

6、规则名称由排序规则指示器和比较风格构成。 语法: = CollationDesignator_:= CaseSensitivity_AccentSensitivity_KanatypeSensitive _WidthSensitive | _BIN参数CollationDesignator指定 Windows 排序规则使用的基本排序规则。基本排序规则包括: 当指定按字典排序时应用其排序规则的字母表或语言 用于存储非 Unicode 字符数据的代码页。 例如 Latin1_General 或法文,两者都使用代码页 1252,或土耳其文,它使用代码页 1254。CaseSensitivityCI

7、指定不区分大小写,CS 指定区分大小写。AccentSensitivityAI 指定不区分重音,AS 指定区分重音。KanatypeSensitiveOmitted 指定不区分大小写,KS 指定区分假名类型。WidthSensitivityOmitted 指定不区分大小写,WS 指定区分大小写。BIN指定使用二进制排序次序。注释Microsoft SQL Server 2000 Windows 排序规则的指示器为:SQL Server 2000 排序规则指示器用于非 Unicode 数据的代码页支持的 Windows 区域设置Albanian 1250 阿尔巴尼亚语Arabic 1256 阿拉

8、伯语(阿尔及利亚)、阿拉伯语(巴林)、阿拉伯语(埃及)、阿拉伯语(伊朗)、阿拉伯语(约旦)、阿拉伯语(科威特)、阿拉伯语(黎巴嫩)、阿拉伯语(利比亚)、阿拉伯语(摩洛哥)、阿拉伯语(阿曼)、阿拉伯语(卡塔尔)、阿拉伯语(沙特阿拉伯)、阿拉伯语(叙利亚)、阿拉伯语(突尼斯)、阿拉伯语(阿拉伯联合酋长国)、阿拉伯语(也门)、波斯语、乌尔都语Chinese_PRC 936 中文(香港特别行政区),中文(中华人民共和国),中文(新加坡)Chinese_PRC_Stroke 936 按汉字笔画排序(中华人民共和国)Chinese_Taiwan_Bopomofo 950 按汉语拼音排序(台湾)Chines

9、e_Taiwan_Stroke 950 繁体中文(台湾)Croatian 1250 克罗地亚语Cyrillic_General 1251 保加利亚语、白俄罗斯语、俄罗斯语、塞尔维亚语Czech 1250 捷克语Danish_Norwegian 1252 丹麦语、挪威语 (Bokml)、挪威语(Nyorsk)Estonian 1257 爱沙尼亚语Finnish_Swedish 1252 芬兰语、瑞典语French 1252 法语(比利时)、法语(加拿大)、法语(卢森堡)、法语(标准)、法语(瑞士)Georgian_Modern_Sort 1252 按现代格鲁吉亚语排序German_PhoneBo

10、ok 1252 按德语电话号码簿排序Greek 1253 希腊语Hebrew 1255 希伯来语Hindi 只用于 Unicode 数据类型北印度语Hungarian 1250 匈牙利语Hungarian_Technical 1250 Icelandic 1252 冰岛语Japanese 932 日语Japanese_Unicode 932 Korean_Wansung 949 朝鲜语Korean_Wansung_Unicode 949 Latin1_General 1252 南非荷兰语、巴斯克语、加泰罗尼亚语、荷兰语(比利时)、荷兰语(标准)、英语(澳大利亚)、英语(不列颠)、英语(加拿大)

11、、英语(加勒比)、英语(爱尔兰)、英语(牙买加)、英语(新西兰)、英语(南非)、英语(美国)、法罗语、德语(奥地利)、德语(列支敦士登)、德语(卢森堡)、德语(标准)、德语(瑞士)、印度尼西亚语、意大利语、意大利语(瑞士)、葡萄牙语(巴西)、葡萄牙语(标准)Latvian 1257 拉脱维亚语Lithuanian 1257 立陶宛语Lithuanian_Classic 1257 Macedonian 1251 马其顿语Mexican_Trad_Spanish 1252 西班牙语(墨西哥)、西班牙语(传统排序)Modern_Spanish 1252 西班牙语(阿根廷)、西班牙语(玻利维亚)、西班

12、牙语(智利)、西班牙语(哥伦比亚)、西班牙语(哥斯达黎加)、西班牙语(多米尼加共和国)、西班牙语(厄瓜多尔)、西班牙语(危地马拉)、西班牙语(现代排序)、西班牙语(巴拿马)、西班牙语(巴拉圭)、西班牙语(秘鲁)、西班牙语(乌拉圭)、西班牙语(委内瑞拉)Polish 1250 波兰语Romanian 1250 罗马尼亚语Slovak 1250 斯洛伐克语Slovenian 1250 斯洛文尼亚语Thai 874 泰国语Turkish 1254 土耳其语Ukrainian 1251 乌克兰语Vietnamese 1258 越南语示例下面是 Windows 排序规则名称的一些示例: Latin1_G

13、eneral_CI_AS 排序规则使用 Latin1 General 字典排序规则,代码页为 1252。不区分大小写但区分重音。 Estonian_CS_AS 排序规则使用爱沙尼亚字典排序规则,代码页为 1257。区分大小写并区分重音。 Latin1_General_BIN 排序规则使用代码页 1252 和二进制排序规则。忽略 Latin1 General 字典排序规则。四、修改、查看排序规则: -修改列的排序规则ALTER TABLE tbALTER COLUMN colname nvarchar(100) COLLATE Chinese_PRC_CI_AS -修改数据库的排序规则ALTER

14、 DATABASE database COLLATE Chinese_PRC_CS_AS-查看某个表的排序规则select collation from syscolumns where id=object_id(Nyourtablename)五、排序规则应用:SQL SERVER 提供了大量的 WINDOWS 和 SQLSERVER 专用的排序规则,但它的应用往往被开发人员所忽略。其实它在实践中大有用处。 例 1:让表 NAME 列的内容按拼音排序:create table #t(id int,name varchar(20)insert #t select 1,中union all sel

15、ect 2,国union all select 3,人union all select 4,阿select * from #t order by name collate Chinese_PRC_CS_AS_KS_WS drop table #t/*结果:id name - - 4 阿2 国3 人1 中*/例 2:让表 NAME 列的内容按姓氏笔划排序:create table #t(id int,name varchar(20)insert #t select 1,三union all select 2,乙union all select 3,二union all select 4,一union all select 5,十select * from #t order by name collate Chinese_PRC_Stroke_CS_AS_KS_WS drop table #t/*结果:id name - - 4 一2 乙3 二5 十1 三*/排序规则应用扩展:SQL SERVER 汉字排序规则可以按拼音、笔划等排序,那么我们如何利用这种功能来处理汉字的一些难题呢?我现在举个例子:用排

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号