• 排序规则的应用


    对于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
                     
  • 相关阅读:
    hdu 4612 Warm up 双连通缩点+树的直径
    Hadoop-04-HBase全然分布式环境搭建
    java实现的Trie树数据结构
    Sharpui企业版-简单介绍【01】 【QQ群:206378966】
    Apache Mina开发手冊之四
    POJ训练计划1459_Power Network(网络流最大流/Dinic)
    svn+ssh
    Android首席设计师宣称移动概念已死,开发人员应该面向屏幕编写应用而非移动
    连锁快餐企业软件的一些管理
    多进程解决datasnap支持的tcp长连接数量少的问题
  • 原文地址:https://www.cnblogs.com/momogua/p/8304595.html
Copyright © 2020-2023  润新知