sqlserver2000排序规则

sqlserver2000排序规则

关键词sqlserver2000    排序规则    SQL    SQL学习    equal                                          

SQL SERVER的排序规则平时使用不是很多,也许不少初学者还比较陌生,但有 一个错误大家应是经常碰到:   SQL   SERVER数据库,在跨库多表连接查询时,若两数据库默认字符集不同,系统就会返回这样的错误:    
                “无法解决   equal   to   操作的排序规则冲突。”  
   
  一.错误分析:  
    这个错误是因为排序规则不一致造成的,我们做个测试,比如:  
  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    
   
  这样,错误就出现了:  
   
                        服务器:   消息   446,级别   16,状态   9,行   1  
                        无法解决   equal   to   操作的排序规则冲突。  
    要排除这个错误,最简单方法是,表连接时指定它的排序规则,这样错误就  
  不再出现了。语句这样写:  
   
  select   *    
  from   #t1   A   inner   join   #t2   B    
  on   A.name=B.name   collate   Chinese_PRC_CI_AI_WS  
   
   
  二.排序规则简介:  
   
          什么叫排序规则呢?MS是这样描述的:"在   Microsoft   SQL   Server   2000   中,  
  字符串的物理存储由排序规则控制。排序规则指定表示每个字符的位模式以及存  
  储和比较字符所使用的规则。"  
    在查询分析器内执行下面语句,可以得到SQL SERVER支持的所有排序规则。  
   
      select   *   from   ::fn_helpcollations()    
   
  排序规则名称由两部份构成,前半部份是指本排序规则所支持的字符集。  
  如:  
    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区分   
   
  区分大小写:如果想让比较将大写字母和小写字母视为不等,请选择该选项。  
  区分重音:如果想让比较将重音和非重音字母视为不等,请选择该选项。如果选择该选项,  
                    比较还将重音不同的字母视为不等。  
  区分假名:如果想让比较将片假名和平假名日语音节视为不等,请选择该选项。  
  区分宽度:如果想让比较将半角字符和全角字符视为不等,请选择该选项

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7199859/viewspace-368895/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/7199859/viewspace-368895/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值