一、排序规则简介:
什么叫排序规则呢?MS是这样描述的:"在 Microsoft SQL Server 中,
字符串的物理存储由排序规则控制。排序规则指定表示每个字符的位模式以及存
储和比较字符所使用的规则。"
在查询分析器内执行下面语句,可以得到SQL SERVER支持的所有排序规则。
lect * from ::fn_helpcollations()
排序规则名称由两部份构成,前半部份是指本排序规则所支持的字符集。
如:
Chine_PRC_CS_AI_WS
前半部份:指UNICODE字符集,Chine_PRC_指针对大陆简体字UNICODE的排序规则,按拼音排序。
文员简历Chine_PRC_Stroke 表示按汉字笔画排序;
排序规则的后半部份即后缀 含义:
_BIN 二进制排序
_CI(CS) 是否区分大小写,CI不区分,CS区分(ca-innsitive/ca-nsitive)
_AI(AS) 是否区分重音,AI不区分,AS区分(accent-innsitive/accent-nsitive)
_KI(KS) 是否区分假名类型,KI不区分,KS区分(kanatype-innsitive/kanatype-nsitive)
_WI(WS) 是否区分宽度 WI不区分,WS区分(width-innsitive/width-nsitive)
傲慢造句区分大小写:如果想让比较将大写字母和小写字母视为不等,请选择该选项。
区分重音:如果想让比较将重音和非重音字母视为不等,请选择该选项。如果选择该选项,
比较还将重音不同的字母视为不等。
区分假名:如果想让比较将片假名和平假名日语音节视为不等,请选择该选项。
区分宽度:如果想让比较将半角字符和全角字符视为不等,请选择该选项。
二、排序规则选择:
如果 SQL Server 实例的所有用户都使用同一种语言,则应选取支持该语言的排序规则。例如,如果所有用户都讲法语,则选择法语排序规则。如果您的 SQL Server 实例的用户讲多种语言,则应选择能最好地满足各种语言需要的排序规则。例如,如果用户一般都讲西欧语言,则选择 Latin1_General 排序规则。
穿王消炎胶囊的功效如果要支持讲多种语言的用户,则对于所有字符数据使用 Unicode 数据类型 nchar、nvarchar 和 nvarchar(max) 是非常重要的。Unicode 可避免非 Unicode 的 char、varchar 和 text 数据类型带来的代码页转换难题。因为排序规则定义用于比较操作的排序次序和 Unicode 字符的排序,所以当用 Unicode 数据类型实现所有列时,排序规则仍会产生不同。即使使用 Unicode 数据类型存储字符数据时,也应选择支持大多数用户的排序规则,以防使用非 Unicode 数据类型实现列或变量。
SQL Server 只支持由基础操作系统支持的代码页。在执行取决于排序规则的操作时,引用
的对象所使用的 SQL Server 排序规则必须使用计算机上运行的操作系统所支持的代码页。 红薯丸子做法
如果指定的排序规则(或引用的对象所使用的排序规则)使用 Windows 操作系统不支持的代码页,则 SQL Server 将发出错误。对此错误的响应取决于计算机上安装的 Windows 操作系统的版本。Windows 2000 及更新版本支持由 SQL Server 排序规则使用的所有代码页。因此,不会出现该错误消息。
三、排序规则的语法:
Windows 排序规则名称由排序规则指示器和比较风格构成。
语法
< Windows_collation_name > :: =
CollationDesignator_<ComparisonStyle>
< ComparisonStyle > ::=
CaSensitivity_AccentSensitivity
[_KanatypeSensitive [_WidthSensitive ] ]
| _BIN
参数企业安全标语
CollationDesignator
指定 Windows 排序规则使用的基本排序规则。基本排序规则包括:
当指定按字典排序时应用其排序规则的字母表或语言
用于存储非 Unicode 字符数据的代码页。
例如 Latin1_General 或法文,两者都使用代码页 1252,或土耳其文,它使用代码页 1254。
CaSensitivity
CI 指定不区分大小写,CS 指定区分大小写。
AccentSensitivity
AI 指定不区分重音,AS 指定区分重音。
KanatypeSensitive
Omitted 指定不区分大小写,KS 指定区分假名类型。
WidthSensitivity
Omitted 指定不区分大小写,WS 指定区分大小写。
BIN
指定使用二进制排序次序。
注释
Microsoft® SQL Server™ 2000 Windows 排序规则的指示器为:
SQL Server 2000 排序规则指示器 用于非 Unicode 数据的代码页
支持的 Windows 区域设置
Albanian 1250 阿尔巴尼亚语
Arabic 1256 阿拉伯语(阿尔及利亚)、阿拉伯语(巴林)、阿拉伯语(埃及)、阿拉伯语(伊朗)、阿拉伯语(约旦)、阿拉伯语(科威特)、阿拉伯语(黎巴嫩)、阿拉伯语(利比亚)、阿拉伯语(摩洛哥)、阿拉伯语(阿曼)、阿拉伯语(卡塔尔)、阿拉伯语(沙特阿拉伯)、阿拉伯语(叙利亚)、阿拉伯语(突尼斯)、阿拉伯语(阿拉伯联合酋长国)、阿拉伯语(也门)、波斯语、乌尔都语
Chine_PRC 936 中文(香港特别行政区),中文(中华人民共和国),中文(新加坡)
Chine_PRC_Stroke 936 按汉字笔画排序(中华人民共和国)
Chine_Taiwan_Bopomofo 950 按汉语拼音排序(台湾)
Chine_Taiwan_Stroke 950 繁体中文(台湾)
Croatian 1250 克罗地亚语
Cyrillic_General 1251 保加利亚语、白俄罗斯语、俄罗斯语、塞尔维亚语
Czech 1250 捷克语
Danish_Norwegian 1252 丹麦语、挪威语 (Bokmål)、挪威语(Nyorsk)
Estonian 1257 爱沙尼亚语
Finnish_Swedish 1252 芬兰语、瑞典语
French 1252 法语(比利时)、法语(加拿大)、法语(卢森堡)、法语(标准)、法语(瑞士)
Georgian_Modern_Sort 1252 按现代格鲁吉亚语排序
German_PhoneBook 1252 按德语电话号码簿排序
Greek 1253 希腊语
Hebrew 1255 希伯来语
Hindi 只用于 Unicode 数据类型 北印度语
Hungarian 1250 匈牙利语
Hungarian_Technical 1250
Icelandic 1252 冰岛语
Japane 932 日语
Japane_Unicode 932
Korean_Wansung 949 朝鲜语
Korean_Wansung_Unicode 949
Latin1_General 1252 南非荷兰语、巴斯克语、加泰罗尼亚语、荷兰语(比利时)、荷兰语(标准)、英语(澳大利亚)、英语(不列颠)、英语(加拿大)、英语(加勒比)、
英语(爱尔兰)、英语(牙买加)、英语(新西兰)、英语(南非)、英语(美国)、法罗语、德语(奥地利)、德语(列支敦士登)、德语(卢森堡)、德语(标准)、德语(瑞士)、印度尼西亚语、意大利语、意大利语(瑞士)、葡萄牙语(巴西)、葡萄牙语(标准)
Latvian 1257 拉脱维亚语
Lithuanian 1257 立陶宛语
徐志摩再别康桥Lithuanian_Classic 1257
Macedonian 1251 马其顿语
Mexican_Trad_Spanish 1252 西班牙语(墨西哥)、西班牙语(传统排序)
Modern_Spanish 1252 西班牙语(阿根廷)、西班牙语(玻利维亚)、西班牙语(智利)、西班牙语(哥伦比亚)、西班牙语(哥斯达黎加)、西班牙语(多米尼加共和国)、西班牙语(厄瓜多尔)、西班牙语(危地马拉)、西班牙语(现代排序)、西班牙
语(巴拿马)、西班牙语(巴拉圭)、西班牙语(秘鲁)、西班牙语(乌拉圭)、西班牙语(委内瑞拉)
Polish 1250 波兰语
Romanian 1250 罗马尼亚语
Slovak 1250 斯洛伐克语
Slovenian 1250 斯洛文尼亚语
Thai 874 泰国语
Turkish 1254 土耳其语
45号钢含碳量
Ukrainian 1251 乌克兰语
Vietname 1258 越南语
白雪公主的故事完整版示例
下面是 Windows 排序规则名称的一些示例:
Latin1_General_CI_AS
排序规则使用 Latin1 General 字典排序规则,代码页为 1252。不区分大小写但区分重音。
Estonian_CS_AS
排序规则使用爱沙尼亚字典排序规则,代码页为 1257。区分大小写并区分重音。
Latin1_General_BIN
排序规则使用代码页 1252 和二进制排序规则。忽略 Latin1 General 字典排序规则。
四、修改、查看排序规则:
------修改列的排序规则
ALTER TABLE tb
ALTER COLUMN colname nvarchar(100) COLLATE Chine_PRC_CI_AS
------修改数据库的排序规则
ALTER DATABASE databa
COLLATE Chine_PRC_CS_AS
------查看某个表的排序规则
lect collation from syscolumns
where id=object_id(N'yourtablename')
五、排序规则应用:
SQL SERVER提供了大量的WINDOWS和SQLSERVER专用的排序规则,但它的应用往往
被开发人员所忽略。其实它在实践中大有用处。
例1:让表NAME列的内容按拼音排序:
create table #t(id int,name varchar(20))
inrt #t lect 1,'中'
union all lect 2,'国'