程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL Server2000 Collection排序規則

SQL Server2000 Collection排序規則

編輯:關於SqlServer
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區分 

區分大小寫:如果想讓比較將大寫字母和小寫字母視為不等,請選擇該選項。
區分重音:如果想讓比較將重音和非重音字母視為不等,請選擇該選項。如果選擇該選項,
                 比較還將重音不同的字母視為不等。
區分假名:如果想讓比較將片假名和平假名日語音節視為不等,請選擇該選項。
區分寬度:如果想讓比較將半角字符和全角字符視為不等,請選擇該選項
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved