ASP.NET学习社区

首页 » 相关学习 » ADO.NET » 汉字的排序规则
cngothic - 2008-3-10 22:15:00
首先声明:本人是菜鸟。所发技术型帖子基本上为自己所看到的所学到的整理共享给大家。

create  table  #t1( 
name  varchar(20)  collate  Albanian_CI_AI_WS,     
value  int) 
   
create  table  #t2( 
name  varchar(20)  collate  Chinese_PRC_CI_AI_WS,         
value  int  ) 
分别建两个表。内联表
select  *  from  #t1  A  inner  join  #t2  B  on  A.name=B.name 
由于 A.name 与 B.name 所采用的排序规则不同。导致上面语句出错。
提示:
服务器:  消息  446,级别  16,状态  9,行  1 
无法解决  equal  to  操作的排序规则冲突。   
排序规则名称由两部份构成,前半部份是指本排序规则所支持的字符集。 
如:
Chinese_PRC_CS_AI_WS   
  前半部份:指UNICODE字符集,Chinese_PRC_指针对大陆简体字UNICODE的排序规则。 
  排序规则的后半部份即后缀  含义:   
  _BIN  二进制排序   
  _CI(CS)  是否区分大小写,CI不区分,CS区分 
  _AI(AS)  是否区分重音,AI不区分,AS区分    
  _KI(KS)  是否区分假名类型,KI不区分,KS区分  
  _WI(WS)  是否区分宽度  WI不区分,WS区分  
看到这里应该明白。我在http://i.aspx1.com/showtopic-320.aspx所说的意思了。
区分大小写:如果想让比较将大写字母和小写字母视为不等,请选择该选项。 
区分重音:如果想让比较将重音和非重音字母视为不等,请选择该选项。如果选择该选项, 
比较还将重音不同的字母视为不等。 
区分假名:如果想让比较将片假名和平假名日语音节视为不等,请选择该选项。 
区分宽度:如果想让比较将半角字符和全角字符视为不等,请选择该选项 

SQL  SERVER提供了大量的WINDOWS和SQLSERVER专用的排序规则,但它的应用往往被开发人员所忽略。其实它在实践中大有用处。 
   
例1:让表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,'阿' 
   
  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                      三 
  */
cngothic - 2008-3-10 22:18:00
DROP TABLE 从数据库中删除表或视图. 只有其所有者才能删除一个表或视图. 使用 DELETE 一个表可能没有任何行,但不会被删除.

DROP TABLE 总是删除目标表上现有的任何索引, 规则,触发器以及约束
蚂蚁啃骨头 - 2008-3-10 23:36:00
这方面的 东西很少得,难得
1
查看完整版本: 汉字的排序规则