您的位置:首页 > 其它

排序规则的应用

2012-10-26 11:55 148 查看
对于char、nchar、varchar、nvarchar类型的列,可以指定Windows或SQL排序规则。
--显示SQL Server实例的默认的排序规则  select SERVERPROPERTY('Collation') --显示:Chinese_PRC_CI_AS    --显示数据库默认的排序规则  select DATABASEPROPERTYEX('master','Collation')  --显示:Chinese_PRC_CI_AS    --获取友好的信息,显示排序规则到底是什么意思  select description  from sys.fn_helpcollations()  where name = 'Chinese_PRC_CI_AS'

那么排序规则有什么应用?
create table test(v varchar(100) )    INSERT into test(v)  values('你'),        ('我'),        ('他'),        ('握'),        ('喔')      --1.查询排序规则的name  select name,description  from sys.fn_helpcollations()  where name like '%Chinese_PRC%'      --2.按照文字的拼音来排序,区分4个不同的声调  --2.1按照默认的排序规则排序:Chinese_PRC_CI_AS  select *  from test   order by v    --2.2按照Chinese_PRC_CS_AI排序,与默认的Chinese_PRC_CI_AS效果一样,  --因为AI这里是不区分重音,而不是不区分声调  SELECT *   FROM test   ORDER BY v COLLATE Chinese_PRC_CS_AI      --2.3按照二进制排序  select v,CAST(v as varbinary)  from test  order by v collate Chinese_PRC_BIN
注意,Chinese_PRC_CI_AS的描述Chinese-PRC, case-insensitive, accent-sensitive, kanatype-insensitive, width-insensitive。
create table tone  (  	--文字对应的拼音的第一个字母  	v nvarchar(1),       	--音调的开始,如:喔,是第一声  	tone_start nvarchar(1) COLLATE Chinese_PRC_CS_AS_KS_WS,     	--音调的结束,如:握,是第四声  	tone_end nvarchar(1) COLLATE Chinese_PRC_CS_AS_KS_WS    )      INSERT into tone(v,tone_start,tone_end)   values('A',N'吖',N'鏊'),        ('B',N'八',N'簿'),        ('C',N'嚓',N'错'),        ('D',N'哒',N'跺'),        ('E',N'屙',N'贰'),        ('F',N'发',N'馥'),        ('G',N'旮',N'过'),        ('H',N'铪',N'蠖'),        ('J',N'丌',N'竣'),        ('K',N'咔',N'廓'),        ('L',N'垃',N'雒'),        ('M',N'妈',N'穆'),        ('N',N'拿',N'糯'),              ('O',N'噢',N'沤'),        ('P',N'趴',N'曝'),        ('Q',N'七',N'群'),        ('R',N'蚺',N'箬'),        ('S',N'仨',N'锁'),        ('T',N'他',N'箨'),        ('W',N'哇',N'鋈'),        ('X',N'夕',N'蕈'),        ('Y',N'丫',N'蕴'),        ('Z',N'匝',N'做')      --返回文字拼音的第一个字母  select tone.v,            --拼音的首字母         a.v,               --文字         tone.tone_start,   --拼音对应的第一声         tone.tone_end      --拼音对应的第四声   from  (  	values('你'),  		  ('我'),  		  ('他'),  		  ('握'),  		  ('喔')  )a(v)     inner join tone          on a.v >= tone.tone_start and             a.v <= tone.tone_end

create table tone  (  	--文字对应的拼音的第一个字母  	v nvarchar(10),       	--音调的开始,如:喔,是第一声  	tone_start nvarchar(1) COLLATE Chinese_PRC_CS_AS_KS_WS,     	--音调的结束,如:握,是第四声  	tone_end nvarchar(1) COLLATE Chinese_PRC_CS_AS_KS_WS    )    --需要添加很多拼音和文字音调的对应关系    INSERT into tone(v,tone_start,tone_end)   values('ni',N'妮',N'腻'),               ('ta',N'他',N'踏'),            ('wo',N'莴',N'握')             --返回文字的拼音  select tone.v,            --拼音的字母         a.v,               --文字         tone.tone_start,   --拼音对应的第一声         tone.tone_end      --拼音对应的第四声   from  (  	values('你'),   --返回:ni  		  ('我'),   --返回:wo  		  ('他'),   --返回:ta  		  ('握'),   --返回:wo  		  ('喔')    --返回:wo  )a(v)     inner join tone          on a.v >= tone.tone_start and             a.v <= tone.tone_end


本文出自 “探索SQLServer” 博客,请务必保留此出处http://yupeigu.blog.51cto.com/3323001/1368132
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: